如何使用Spark JavaPairRDD.saveAsNewAPIHadoopDataset使用HFileOutputFormat类的HBase?

问题描述:

我试图将Spark JavaPairRDD的内容批量加载到HBase表中。如何使用Spark JavaPairRDD.saveAsNewAPIHadoopDataset使用HFileOutputFormat类的HBase?

看来,使用JavaPairRDD.saveAsNewAPIHadoopDataSet与HFileOutputFormat是正确的方法。

是否有一个示例代码?

+0

可以https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/HBaseTest.scala或https://github.com/apache/ spark/blob/master/examples/src/main/python/hbase_outputformat.py是* any * help? – 2014-09-20 23:55:20

考虑包含单线上的RDD:

{"id":3,"name":"Moony","color":"grey","description":"Monochrome kitty"} 

变换的RDD
我们NEET到RDD转变成(键,值)对具有下列内容:

( rowkey,[行键,列族,列名,值])

datamap = rdd.map(lambda x: (str(json.loads(x)["id"]),[str(json.loads(x)["id"]),"cfamily","cats_json",x])) 

保存到HBase
我们可以利用本示例中使用的RDD.saveAsNewAPIHadoopDataset函数:PySpark Hbase example将RDD保存到HBase ?

datamap.saveAsNewAPIHadoopDataset(conf=conf,keyConverter=keyConv,valueConverter=valueConv) 

你可以参考我的博客:pyspark-sparkstreaming hbase的工作示例的完整代码。