我正在尝试使用 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';
但只有时间戳和第一个值存储在表中。 例如:
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 ;
关于csv - 使用配置单元导入混合数据(字符串和字符串数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778799/