使用配置单元导入混合数据(字符串和字符串数组)

Import mixed data (string and array of strings) with hive

我正在尝试使用配置单元导入一些这种类型的数据:

2015-0-6,value1

2015-0-9,value1,value2,value3

我试过这些方法

CREATE TABLE fields (timestamp STRING, fields_array ARRAY<STRING>)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n';

CREATE TABLE fields (timestamp STRING, fields_string STRING)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n';

但只有时间戳和第一个值存储在 table 中。 例如:

2015-0-6 value1

2015-0-9 value1

为什么?

您需要定义一个 python 脚本,如下所示:

import sys

for line in sys.stdin:
    splitLine=line.strip().split(',', 1)
    print "%s\t%s" % (splitLine[0], splitLine[1])

然后在你的 hql 类型中

CREATE TABLE fields (timestamp STRING, fields_string STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

ADD FILE /your_script_path/script.py;

INSERT OVERWRITE TABLE fields SELECT TRANSFORM(line) USING 'python script.py' AS timestamp, fields FROM your_table_in_which_you_have_one_column_called_LINE ;

尝试使用本博客中介绍的 SerDe。我认为它接近您的要求。 https://bigdatamusings.wordpress.com/2014/08/