【问题标题】:Hive array with hbase in binary type with RegexSerDe带有 RegexSerDe 的二进制类型的带 hbase 的 Hive 数组
【发布时间】:2014-08-02 14:18:05
【问题描述】:

我尝试使用RegexSerDe 创建一个表,因为我的数据是字节并且我的字节与默认分隔符冲突。

CREATE  External TABLE f10(key string, arr array<string> )
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'  WITH SERDEPROPERTIES("field.delimited"="[,]")
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:arr2" ) 
TBLPROPERTIES ("hbase.table.name"="f");

但有些错误:

FAILED: Error in metadata: java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.contrib.serde2.RegexSerDe only accepts string columns, but column[1] named arr has type array<string>)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  

有什么想法吗? 有什么好的分隔符吗?

或者任何好的SERDE。

蜂巢版本 11

【问题讨论】:

  • 错误描述很清楚:RegexSerde 需要一个字符串,但表 f10 的第 1 列的类型是一个数组。此外,如果您的数据是二进制文件,则 RegexSerde 不合适,因为它应该用于处理带有定义正则表达式的文本数据。也许你可以看看 LazyBinarySerDe?

标签: hadoop hive hbase delimiter


【解决方案1】:

存储处理程序带有自己的 serde 和输入/输出格式。我不确定指定您自己的 serde 和存储处理程序是否有效。

我正在尝试寻找类似问题的答案。 hbase 表 key 或 value 中的多字节分隔符很难用 hive 管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多