蜂巢无法拾取所选列

阿达沙

下面的代码创建示例雇员表。一切正常,但是它只返回必填列时返回了全部数据,我不知道我要去哪里。

CREATE TABLE employees (
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
deductions MAP<STRING, FLOAT>,
address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

使用的样本数据:

John Doe^A100000.0^AMary Smith^BTodd Jones^AFederal Taxes^C.2^BState
Taxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600

使用的样本查询:

SELECT name FROM emp;

返回结果:

John Doe^A100000.0^AMary Smith^BTodd Jones^AFederal Taxes^C.2^BState
Taxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600
巴尔杜兹

您遇到的问题是,根据输入数据的外观,控制字符已以纯文本形式编写,因此“ ^ A”将不会被识别为字符\ 001。您可以尝试使用十六进制查看器打开输入文件,看看是否正确。

但是,如果这是正确的,则需要告诉Hive用字符串而不是字符来分隔字段。这不是那么简单,因为您需要使用RegexSerDe,并且不允许使用诸如MAP或的列类型ARRAY最简单的解决方案是修改输入数据并将定界符更改为单个字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章