配置单元:来自avro的外部分区表

vddsk6oq  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(285)

是否可以基于avro文件在配置单元中创建外部表,该文件还为目录分区添加列:
假设我有数据存储在 /data/demo/dt=2016-02-01 等等。然后我尝试了以下操作,但从表中选择时得到0行:

CREATE EXTERNAL TABLE demo
  PARTITIONED BY (date STRING)
  ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
  STORED AS AVRO
  LOCATION '/data/demo/'
  TBLPROPERTIES ('avro.schema.url' = 'hdfs:///path/to/schema.avsc');

我试过了,没带枪 PARTITIONED BY 子句,然后我得到了记录,但显然没有 key=value 目录分区。这有可能吗?

sdnqo3pr

sdnqo3pr1#

因为分区名称在您的案例中 dt ,不是 date ,你必须使用 PARTITIONED BY (dt string) ,然后仍然需要将分区添加到元存储:

ALTER TABLE demo ADD PARTITION (dt='2016-02-01')

如果您有多个分区,可以修复表,它会自动添加这些分区:

msck repair table demo

相关问题