类型转换猪 hcatalog

Posted

技术标签:

【中文标题】类型转换猪 hcatalog【英文标题】:Type conversion pig hcatalog 【发布时间】:2014-02-20 00:41:46 【问题描述】:

我使用 HCatalog 0.4 版。我在配置单元“abc”中有一个表,其中有一列数据类型为“timestamp”。当我尝试运行这样的猪脚本时,“raw_data = load 'abc' using org.apache.hcatalog.pig.HCatLoader();”我收到一条错误消息“java.lang.TypeNotPresentException:类型时间戳不存在”。

【问题讨论】:

【参考方案1】:

问题是 hcatalog 不支持时间戳类型。 它将在 hive 0.13 下得到支持,他们有一个关于这个问题的问题已经解决了,你可以在https://issues.apache.org/jira/browse/HIVE-5814看到这个问题

【讨论】:

【参考方案2】:

如果您使用 Hive-Hcatalog 0.13.0 检查 HCatLoader 的路径,则必须使用 org.apache.hive.hcatalog.pig.HCatLoader() 而不是 org.apache.hcatalog.pig.HCatLoader()

【讨论】:

【参考方案3】:

Hive 0.13 具有 Timestamp 数据类型。但是使用HCatLoader会有数据丢失的情况。

但是 Hive -> Pig 将使用 HCat Loader,纳秒会从时间戳中丢失。

Pig -> 使用 HCat Storer 的 Hive。使用毫秒根据时间戳进行转换。

参考:

https://cwiki.apache.org/confluence/display/Hive/HCatalog+LoadStore#HCatalogLoadStore-TypesinHive0.13.0andLater.1

【讨论】:

以上是关于类型转换猪 hcatalog的主要内容,如果未能解决你的问题,请参考以下文章

猪没有使用 Hcatalog 定位 Hive 表

在猪脚本中按日期时间排序

无法使用导入解析 org.apache.hcatalog.pig.hcatloader

hortonworks 沙盒猪脚本

将猪拉丁正则表达式代码转换为 Google BigQuery

如何在猪拉丁语脚本中没有前导零时将值转换为 hhmm 格式