【问题标题】:How to insert on-fly query data to HBase using Hive如何使用 Hive 将动态查询数据插入 HBase
【发布时间】:2017-06-30 21:59:27
【问题描述】:

我是 Hbase 和 Hive 的新手。有人可以解释一下如何使用 Hive 将数据插入 Hbase 吗?

我找到了很多关于此的信息,但他们都在谈论完全相同的事情。换句话说,它们是从另一个已经存在的表中插入到 Hbase 表中。

在我的情况下是不同的。我有一个应用程序,它从用户那里读取一些数据并发送到服务器,传入的数据需要写入 Hbase 表。我该怎么做?

这是我的桌子:

CREATE TABLE hive_table (key INT, username STRING, password STRING, address STRING) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES('hbase.columns.mapping'=':key, user:val')
TBLPROPERTIES('hbase.table.name'='hbase_table');

如何使用 Hive 将以下记录插入到我的 Hbase 表中:hbase_table:

key=123, username='something', password='pass', address='somewhere';

【问题讨论】:

    标签: hive hbase


    【解决方案1】:

    Hive 不为 ANSI SQL INSERT INTO table VALUES (a, b, c, d) insert 语句提供任何支持。如果您有另一个包含相关数据的表或文件,您可以使用类似

    的方式进行插入

    INSERT INTO hive_table SELECT key, username, password, address FROM foo

    如果你想直接与 HBase 交互,我建议使用:

    1. HBase shell
    2. Phoenix
    3. Kiji

    【讨论】:

    • 感谢耶利米的回答。那么当用户在网站上注册并同时提供任务分配时,我如何存储用户数据呢?我认为 HBase 本身不提供任何任务并行性。它至少应该与 MapReduce 一起使用,以实现任务的分配。由于 Hive 是 MapReduce 的不错替代品,因此我想在这种情况下使用 Hive。
    • 与HBase通信写入数据时,指定row key。该行键确定哪个 Region Server 负责处理单行数据。 Hive不是数据库; Hive 是一个作业翻译器 - 实际上,它将 HiveQL 转换为 MapReduce。要将数据推送到 HBase 数据中,您需要使用我提到的三个 HBase 客户端库。
    • 好的,知道了!非常感谢耶利米。
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多