Sql 为分区数据定义Impala表架构

Sql 为分区数据定义Impala表架构,sql,database-schema,pyspark,impala,Sql,Database Schema,Pyspark,Impala,具有拼花格式的数据帧存储,并基于文件系统结构中一列或多列的值在不同文件上进行物理分区,如下所示: |-region=Europe | |-processed=1 | | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet | |-processed=2 | | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet | |-p

具有拼花格式的数据帧存储,并基于文件系统结构中一列或多列的值在不同文件上进行物理分区,如下所示:

|-region=Europe
|   |-processed=1
|   |   |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|   |-processed=2
|   |   |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|   |-processed=3
|   |   |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|   |-processed=4
|       |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|-region=Asia
|   |-processed=2
|   |   |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|   |-processed=4
|       |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|-region=America
|   |-processed=3
|       |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet
|-_SUCCESS
要使模式了解分区,我将手动添加每个分区:

ALTER TABLE status_log ADD PARTITION (region='Europe', processed="1") LOCATION '/hdfs/status_logs/region=Europe/processed=1';
ALTER TABLE status_log ADD PARTITION (region='Europe', processed="2") LOCATION '/hdfs/status_logs/region=Europe/processed=2';
ALTER TABLE status_log ADD PARTITION (region='Europe', processed="4") LOCATION '/hdfs/status_logs/region=Europe/processed=2';
...
..
.
有没有办法定义表模式,以便它能够读取 树目录结构并自动推断分区模式?
还是总是需要自动将每个分区添加到表中?

,也就是说。

您可以使用hive,因为impala共享同一个元存储,这应该不是问题。我假设在talbe状态日志的定义中,位置设置为“/hdfs/status\u logs”

在配置单元中发出命令

msck repair table status_logs
这将自动将所有分区添加到元存储中。 然后回到黑斑羚,你需要做的就是

invalidate metadata status_logs
您可以看到所有的分区。 验证您是否可以这样做(这一点您可能已经知道)

show partitions status_logs