是否可以在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
目录分区。这有可能吗?
答案 0 :(得分:2)
由于分区名称在您的情况dt
,而不是date
,您必须使用PARTITIONED BY (dt string)
,然后您仍然需要将分区添加到Metastore:
ALTER TABLE demo ADD PARTITION (dt='2016-02-01')
如果您有多个分区,可以repair表格,它会自动添加:
msck repair table demo