【问题标题】:Unable to read date value from pig to hive无法从猪读取日期值到蜂巢
【发布时间】:2016-01-05 07:17:24
【问题描述】:

我使用 pig 处理了我的数据并存储在 hdfs 位置 (/tmp/output)。现在必须将该数据读入指向同一位置(/tmp/ouput)的配置单元表。但是当我尝试从配置单元表中获取日期值时,我显示为 NULL。 以下是我使用的命令:

STORE DATA into '/tmp/output' USING PigStorage('\u0001');

当我触发以下查询时: hive -e "select load_date from 'STUDENT'"

它给我NULL

2015-10-06T10:09:00.000-04:00 是我在 /tmp/output 中看到的时间格式。

似乎 hive 无法读取这种格式(hive 中的时间戳)。 如何将这种格式转换为 hive 可读的格式。

任何帮助将不胜感激!

【问题讨论】:

  • 您是否设置了HCatalog?如果是这样,您可以将输出直接发送到 Hive 表并绕过 hdfs。
  • 是的,我有 HCatalog。你能告诉如何将猪输出直接移动到蜂巢表吗?
  • 创建一个 Hive 表,其列名和数据类型与您要存储的 Pig 中的关系完全相同。在 Pig 中,将 store 命令更改为 STORE DATA INTO hive_db.hive_table USING org.apache.hcatalog.pig.HCatStorer(),其中 hive_dbhive_table 是您刚刚创建的 hive 数据库/表的名称。
  • 文本文件中的时间戳必须使用格式 yyyy-mm-dd hh:mm:ss[.f...]。如果它们是另一种格式,则将它们声明为适当的类型(INT、FLOAT、STRING 等)并使用 UDF 将它们转换为时间戳。
  • @GoBrewers14 谢谢。将数据直接存储到配置单元表对我有用。 STORE DATA INTO hive_db.hive_table USING org.apache.hive.hcatalog.pig.HCatStorer()

标签: hadoop hive apache-pig


【解决方案1】:

我们可以使用 hcatstorer 将 pig 输出存储到 hive 表中。但默认情况下,hcatstorer 将输入的数据类型视为字符串。所以最后,存储在 hive 表中的日期列将没有日期数据类型。它将是字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2019-05-20
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多