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

标签 csv hadoop hive

我正在尝试使用 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/

相关文章:

python - 写入和读取 csv 文件 python

java - 将 mapreduce 作业提交到 hadoop 2.2 从 windows 到 ubuntu 时出现 UnsatisfiedLinkError (NativeIO$Windows.access0)

json - Hive为Fluentd Apache日志数据创建表语句

hadoop - 如何在同一个查询中显示两个字段的总和

shell - 如何在Hive中声明变量时调用变量中的查询?

csv - 有什么方法可以只从 Pig 中的 CSV 中读取所需的列吗?

java - 在单个数组中添加浮点值和字符串值,并使用它来写入 .CSV 文件

javascript - 将 csv 文件传递​​到 SpringBoot java 服务器

hadoop - hbase和zookeeper的版本

hadoop - 可以禁用 WebHDFS UI 删除功能吗?