hadoop - 关于如何通过HFile将 Protocol Buffer 文件批量加载到HBase上的任何想法?

标签 hadoop apache-spark hbase protocol-buffers hfile

这是我想要做的:

将Hive中的数据加载到通过 Protocol Buffer 序列化的HBase中。

我尝试了多种方法:

  • 直接创建与HBase的连接,然后将其放入HBase。这行得通,但显然效率不高。
  • 我从S3中的Hive中导入了json表,并将它们存储为文本文件(由制表符分隔),然后使用importTsv实用程序生成HFile并将其批量加载到HBase中,这也可以工作。

  • 但是现在我想以一种更有效的方式实现这一目标:

    从S3中的Hive表导出我的数据,将它们序列化为 Protocol Buffer 对象,然后生成HFile并将HFile直接安装到HBase上。

    我正在使用Spark作业从Hive读取数据,这可以给我JavaRDD,然后可以构建 Protocol Buffer 对象,但我无所适从。

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

    非常感谢!

    最佳答案

    感谢@Samson指出了该很棒的帖子。

    经过反复试验,我得到了解决的办法。
    为了减轻别人的痛苦,这是工作中的example

    它能做什么:
    它使用Spark从S3读取数据,将它们重新划分为相应的区域,生成HFiles。

    关于hadoop - 关于如何通过HFile将 Protocol Buffer 文件批量加载到HBase上的任何想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44311678/

    相关文章:

    maven - Zeppelin 不加载 Maven jar

    hadoop - HBase程序无法连接到本地主机上的ZooKeeper

    Hadoop DataStreamer 异常 : File could only be replicated to 0 nodes instead of minReplication (=1)

    sql - 如何在 Python 3.7 中连接到 hadoop/hive 数据库(需要身份验证)并执行简单的 SQL 查询?

    java - 如何使用 JDBC API 捕获 Hive 退出状态或错误代码

    arrays - 如何在Postgresql中插入具有列数组<array<double>>的数据框?

    apache-spark - Pyspark Dataframe 中的 Cache()

    hbase - 从 HBase shell 导出数据

    java - 使用 HBase 列或使用 Avro 序列化数据哪个更好?

    java - 如何设置Hadoop中MultithreadedMapRunner的线程数?