使用 HIve/Impala 中的加载数据加载数据

Loading data using Load Data in HIve/Impala

我可以使用以下命令将数据加载到配置单元中:

LOAD DATA   INPATH '/xx/person/a.csv' INTO TABLE person PARTITION (age = 30);

在上面的语句中,age=30是必须存储数据的分区。

如果 a.csv 里面确实有年龄栏怎么办?有没有办法让配置单元通过一个 LOAD DATA 语句将 a.csv 的每一行正确插入我的人 table 下的正确分区?

LOAD DATA只支持静态分区:"When the LOAD DATA statement operates on a partitioned table, it always operates on one partition at a time."

INSERT,另一方面,支持动态分区:"If a partition key column is mentioned but not assigned a value, [...] the unassigned columns are filled in with the final columns of the SELECT list."

所以你可以做的是在源数据上定义一个 table,也可以选择定义一个视图来将分区列移动到最终位置,最后使用 insert into [...] select [...] 来填充分区table从视图。