如何在HIVE表中加载像struct,map这样的复杂数据结构

时间:2014-05-03 08:19:42

标签: hadoop hive hiveql

我正在尝试将以下数据插入到配置单元表中:

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

Mary Smith ^ A80000.0 ^ ABill King ^ AFederal Taxes ^ C.2 ^ BState Taxes ^ C. 05 ^ BInsurance ^ C.1 ^ A100安大略省St. ^ BChicago ^ BIL ^ B60601

Todd Jones ^ A70000.0 ^ AFederal Taxes ^ C.15 ^ BState Taxes ^ C.03 ^ BInsurance ^ C. 1 ^ A200 Chicago Ave. ^ BOak Park ^ BIL ^ B60700

比尔·金^ A60000.0 ^ AFederal Taxes ^ C.15 ^ BState Taxes ^ C.03 ^ BInsurance ^ C. 1 ^ A300模糊博士^ BObscuria ^ BIL ^ B60100

这是我正在使用的查询:

CREATE TABLE员工(

名称STRING,

薪水FLOAT,

下属ARRAY,

扣除MAP,

地址STRUCT ) ROW FORMAT DELIMITED

终止于'\ 001'

的字段

由'\ 002'

终止的收集物品

由'\ 003'

终止的MAP键

'\ n'终止的行

存储为文本文件

LOAD LOCAL INPATH'/home/cloudera/a.txt';

但是所有细节都存储在一列中。任何人都可以解释原因。

John Doe ^ A100000.0 ^ AMary Smith ^ BTodd Jones ^ AFederal Taxes ^ C.2 ^ BState NULL null null null 税收^ C.05 ^ BInsurance ^ C.1 ^ A1 Michigan Ave. ^ BChicago ^ BIL ^ B60600 NULL null null null Mary Smith ^ A80000.0 ^ ABill King ^ AFederal Taxes ^ C.2 ^ BState Taxes ^ C. NULL null null null 05 ^ BInsurance ^ C.1 ^ A100 Ontario St. ^ BChicago ^ BIL ^ B60601 NULL null null null Todd Jones ^ A70000.0 ^ AFederal Taxes ^ C.15 ^ BState Taxes ^ C.03 ^ BInsurance ^ C. NULL null null null 1 ^ A200 Chicago Ave. ^ BOak Park ^ BIL ^ B60700 NULL null null null Bill King ^ A60000.0 ^ AFederal Taxes ^ C.15 ^ BState Taxes ^ C.03 ^ BInsurance ^ C. NULL null null null 1 ^ A300 Obscure Dr. ^ BObscuria ^ BIL ^ B60100 NULL null null null

2 个答案:

答案 0 :(得分:2)

这可能是输入数据文件的问题,如果您手动创建此文件,您需要在文件中正确插入分隔字符,我建议您可以从图书网站下载示例文本文件(我假设你指的是编程蜂巢书),然后尝试一下。输入文件在那里可用,我可以加载它...

答案 1 :(得分:0)

遇到同样的问题。

在创建表时解决,更改默认的ROW FORMAT DELIMITED,'\ 001' - > ',''\ 002' - > ';' '\ 003' - > ':'

然后您可以使用上面的字符准备文本文件进行拆分。