hadoop - 将 csv 数据插入复杂的配置单元表

标签 hadoop hive

Hive版本为0.13,Hive表说明如下:

CREATE  TABLE temp
(
customer_id int,
sales_item array<struct<item_id:int,item_name:string,item_price:decimal(10,2)>>,
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|';

我的 csv 文件是:

10,1|watch|300

如何插入配置单元表...我试过了,输出如下:

10  [{"item_id":1,"item_name":null,"item_price":null}]  

不为 item_name 和 item_price 插入任何值。

最佳答案

分隔符的当前文档存在问题。稍后我会更新它。
它实际上不是字段集合项映射键,而是嵌套级别 1、2 和 3,并且还有未映射的其他级别通过 create table 语法。

create external table temp
(
    customer_id     int
   ,sales_item      array<struct<item_id:int,item_name:string,item_price:decimal(10,2)>>
)
row format delimited
fields terminated by ','
map keys terminated by '|'
;

select * from temp
;

+-------------+------------------------------------------------------+
| customer_id |                      sales_item                      |
+-------------+------------------------------------------------------+
|          10 | [{"item_id":1,"item_name":"watch","item_price":300}] |
+-------------+------------------------------------------------------+

关于hadoop - 将 csv 数据插入复杂的配置单元表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44698470/

相关文章:

hadoop - Hadoop中有多少种InputFormat?

database - 将数据从 HDFS 加载到 Vertica

hadoop - 创建 BigInsights (IBM Hadoop) Docker 镜像,sysctl 问题

hadoop - MapReduceIndexerTool输出目录错误 "Cannot write parent of file"

hadoop - Hiveserver2 无法在直线中打开新 session

hadoop - 如何将多个列值转换为 hive 中的行?

java - 配置单元查询返回非零代码

mysql - 动态分区 + 在 HIVE 上创建为

hadoop - Hive INSERT OVERWRITE DIRECTORY 命令输出没有用定界符分隔。为什么?

python - pyhive:使用 pyhive 设置配置单元属性