关于如何通过 HFile 将协议缓冲区文件批量加载到 HBase 的任何想法?

Any ideas on how to bulk loading protocol buffer file via HFile onto HBase?

这是我正在尝试做的事情:

将数据从 Hive 加载到由协议缓冲区序列化的 HBase。

我尝试了多种方法:

  1. 直接创建到 HBase 的连接并执行 Puts 到 HBase。这可行,但显然效率不高。

  2. 我从 S3 中的 Hive 导入了 json table 并将它们存储为文本文件(由制表符分隔),然后使用 importTsv 实用程序生成 HFile 并批量加载它们进入 HBase,这也有效。

但现在我想以更有效的方式实现这一点:

从 S3 中的 Hive table 中导出我的数据,将它们序列化为协议缓冲区对象,然后生成 HFile 并将 HFile 直接挂载到 HBase 上。

我正在使用 Spark 作业从 Hive 读取数据,这可以给我 JavaRDD,然后我可以构建我的协议缓冲区对象,但我不知道如何从那里继续。

所以我的问题是:如何从协议缓冲区对象生成 HFile。 我们不想将它们保存为本地磁盘或 HDFS 上的文本文件,我如何直接从那里生成 HFile?

非常感谢!

感谢@Samson 指出那个很棒的 post。

经过反复试验,我开始工作了。 只是为了减轻别人的痛苦,这是有效的 example.

它的作用: 它使用Spark从S3读取数据,重新分区到相应的区域,生成HFiles。