在 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?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据