Hive:Avro的外部分区表

时间:2016-10-10 11:06:00

标签: hive

是否可以在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目录分区。这有可能吗?

1 个答案:

答案 0 :(得分:2)

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

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

如果您有多个分区,可以repair表格,它会自动添加:

msck repair table demo