【问题标题】:HBase to Hive example with Scalding使用 Scalding 的 HBase 到 Hive 示例
【发布时间】:2015-02-20 15:14:38
【问题描述】:

我正在尝试从 HBase 读取数据,对其进行处理,然后写入 Hive。我是 Scalding 和 Scala 的新手。

我已查看 SpyGlass 以从 HBase 读取数据。它运行良好,我可以读取数据,然后将其写入文件。

val data = new HBaseSource(
tableName,
hbaseHost,
SCHEMA.head,
SCHEMA.tail.map((x: Symbol) => "data"),
SCHEMA.tail.map((x: Symbol) => new Fields(x.name)),
sourceMode = SourceMode.SCAN_ALL)
.read
.fromBytesWritable(SCHEMA)
.debug
.write(Tsv(output.format("get_list")))

所以现在的问题是我如何将它写入 Hive。如果有人设法做到这一点,我将不胜感激一个简单的例子或一些帮助来实现这一点。

【问题讨论】:

    标签: scala hadoop hive hbase scalding


    【解决方案1】:

    您实际上不需要做任何特别的事情来写入 Hive - 您当前的代码绝对没问题。 Hive 只是在 HDFS 中存储的数据之上应用元数据。您需要做的就是在您正在编写的数据之上创建一个 Hive 表。您有两个主要选择。如果要将数据移动到 Hive 仓库,则需要使用如下命令加载:

    load data inpath '/your/file/or/folder/on/the/hdfs' into table your_table;
    

    如果您不想移动数据,可以创建一个不移动数据的external Hive 表。外部表的优点是

    • 您不必将数据加载到其中,
    • 删除表不会删除数据。

    【讨论】:

    • 我没有考虑过,我想外部方式对我来说是最好的方式。谢谢,我去试试。
    • 我现在最好的方法是创建一个已分区并使用 Orc 格式的外部表。从烫伤中,我从 hbase 读取数据并写入 OrcFile(更多信息在这里github.com/branky/cascading.hive/blob/master/src/main/scala/com/…)并将其放置在我的外部表的新分区中。但是我仍然需要在我的烫伤应用程序之外执行一个 hive 命令:“alter table table_name add partition(dt='2015-03-17') location 'hdfs://apps/hive/warehouse.../dt= 2015 年 3 月 21 日'"。我宁愿只通过烫伤加载..
    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多