从hdfs目录和子目录创建impala表

ecfdbz9o  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(845)

我有一个目录,比如 /user/name/folder .
在这个目录中,我有更多的子目录名为 dt=2020-06-01 , dt=2020-06-02 , dt=2020-06-03 等等。
这些目录包含Parquet文件。它们都有相同的模式。
是否可以使用 /user/name/folder ?
每次我这样做,我得到一个表0记录。有没有办法告诉 Impala 从所有子目录中提取Parquet文件?

cuxqih21

cuxqih211#

一种方法是使用静态分区加载数据,在静态分区中手动定义不同的分区。对于静态分区,您可以使用altertable…add partition语句手动创建分区,然后将数据加载到分区中。

  1. CREATE TABLE customers_by_date
  2. (cust_id STRING, name STRING)
  3. PARTITIONED BY (dt STRING)
  4. STORED AS PARQUET;
  5. ALTER TABLE customers_by_country
  6. ADD PARTITION (dt='2020-06-01')
  7. SET LOCATION '/user/name/folder/dt=2020-06-01';

如果未指定位置,则创建位置

  1. ALTER TABLE customers_by_date
  2. ADD PARTITION (dt='2020-06-01');

你也可以用hdfs命令加载数据

  1. $ hdfs dfs -cp /user/name/folder/dt=2020-06-01 /user/directory_impala/table/partition

您可以通过以下链接访问cloudera文档以了解更多详细信息:
impala表的分区
impala create table语句
impala alter table语句

展开查看全部

相关问题