Hive:来自Avro的外部分区表



是否有可能在Hive中创建一个基于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目录分区。这有可能吗?

由于分区名称在您的情况下是dt,而不是date,因此您必须使用PARTITIONED BY (dt string),然后您仍然需要将分区添加到metastore:

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

如果你有几个分区,你可以修复表,它会自动添加它们:

msck repair table demo

最新更新