大家。我尝试使用 hbase 集成但遇到了问题。hive 的时间戳字段查询为空。 我的 sql 是:
CREATE EXTERNAL TABLE hbase_data(nid string, dillegaldate timestamp, coffense string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES( "hbase.columns.mapping"=":key,0:DILLEGALTIMESTAMP,0:COFFENSE") TBLPROPERTIES("hbase.table.name" = "ILLEGAL_DATA");
执行成功,但通过hive查询
select * from hbase_data limit 10;
列 dillegaldate 是空的,我用谷歌搜索了很多时间,但仍然没有找到问题。谁能告诉我如何解决它?非常感谢
最佳答案
0:DILLEGALTIMESTAMP
替换为 0:DILLEGALTIMESTAMP#b
CREATE EXTERNAL TABLE hbase_data(nid string, dillegaldate timestamp, coffense string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES( "hbase.columns.mapping"=":key,0:DILLEGALTIMESTAMP#b,0:COFFENSE") TBLPROPERTIES("hbase.table.name" = "ILLEGAL_DATA");
映射条目必须是 :key、:timestamp 或 column-family-name:[column-name][#(binary|string) 形式(由 # 分隔的类型规范是在 Hive 0.9 中添加的。 0,早期版本将所有内容解释为字符串) 如果没有给出类型规范,将使用 hbase.table.default.storage.type 中的值 有效值的任何前缀也是有效的(即 #b 而不是 #binary) 如果您将列指定为二进制,则相应 HBase 单元格中的字节应采用 HBase 的字节类产生的形式。
关于hadoop - Hive 与 Hbase 集成 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091818/