在 saveAsNewAPIHadoopDataset 上阻止 python 的火花流将数据写入 Hbase
Posted
技术标签:
【中文标题】在 saveAsNewAPIHadoopDataset 上阻止 python 的火花流将数据写入 Hbase【英文标题】:spark streaming write data to Hbase with python blocked on saveAsNewAPIHadoopDataset 【发布时间】:2015-04-24 17:30:07 【问题描述】:我正在使用 spark-streaming python 读取 kafka 并写入 hbase,我发现 saveAsNewAPIHadoopDataset 阶段的工作很容易被阻塞。如下图: 你会发现这个阶段的持续时间是 8 小时。请问spark是通过Hbase api写数据还是直接通过HDFS api写数据?
【问题讨论】:
【参考方案1】:有点晚了,但这里有一个类似的例子 将 RDD 保存到 hbase : 考虑一个包含单行的 RDD:
"id":3,"name":"Moony","color":"grey","description":"Monochrome kitty"
改造 RDD 我们需要将RDD转换成一个(key,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。
【讨论】:
以上是关于在 saveAsNewAPIHadoopDataset 上阻止 python 的火花流将数据写入 Hbase的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?