我有一个目录,比如 /user/name/folder .在这个目录中,我有更多的子目录名为 dt=2020-06-01 , dt=2020-06-02 , dt=2020-06-03 等等。这些目录包含Parquet文件。它们都有相同的模式。是否可以使用 /user/name/folder ?每次我这样做,我得到一个表0记录。有没有办法告诉 Impala 从所有子目录中提取Parquet文件?
/user/name/folder
dt=2020-06-01
dt=2020-06-02
dt=2020-06-03
cuxqih211#
一种方法是使用静态分区加载数据,在静态分区中手动定义不同的分区。对于静态分区,您可以使用altertable…add partition语句手动创建分区,然后将数据加载到分区中。
CREATE TABLE customers_by_date (cust_id STRING, name STRING) PARTITIONED BY (dt STRING)STORED AS PARQUET;ALTER TABLE customers_by_country ADD PARTITION (dt='2020-06-01') SET LOCATION '/user/name/folder/dt=2020-06-01';
CREATE TABLE customers_by_date
(cust_id STRING, name STRING)
PARTITIONED BY (dt STRING)
STORED AS PARQUET;
ALTER TABLE customers_by_country
ADD PARTITION (dt='2020-06-01')
SET LOCATION '/user/name/folder/dt=2020-06-01';
如果未指定位置,则创建位置
ALTER TABLE customers_by_dateADD PARTITION (dt='2020-06-01');
ALTER TABLE customers_by_date
ADD PARTITION (dt='2020-06-01');
你也可以用hdfs命令加载数据
$ hdfs dfs -cp /user/name/folder/dt=2020-06-01 /user/directory_impala/table/partition
您可以通过以下链接访问cloudera文档以了解更多详细信息:impala表的分区impala create table语句impala alter table语句
1条答案
按热度按时间cuxqih211#
一种方法是使用静态分区加载数据,在静态分区中手动定义不同的分区。对于静态分区,您可以使用altertable…add partition语句手动创建分区,然后将数据加载到分区中。
如果未指定位置,则创建位置
你也可以用hdfs命令加载数据
您可以通过以下链接访问cloudera文档以了解更多详细信息:
impala表的分区
impala create table语句
impala alter table语句