我正在使用spark-streaming python读取kafka并写入hbase,我发现saveAsNewAPIHadoopDataset阶段的工作很容易被阻止。如下图: 你会发现这个阶段的持续时间是8小时。火花是通过Hbase api写入数据还是通过HDFS api直接写入数据?
答案 0 :(得分:0)
有点晚了,但这是一个类似的例子
要将RDD保存到hbase:
考虑一个包含单行的RDD:
{"id":3,"name":"Moony","color":"grey","description":"Monochrome kitty"}
转换RDD
我们需要将RDD转换为具有以下内容的(键,值)对:
(rowkey,[row key,column family,column name,value])
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获取工作示例的完整代码。