【问题标题】:Hive: external partitioned table from AvroHive:来自 Avro 的外部分区表
【发布时间】:2016-10-10 11:05:59
【问题描述】:

是否可以基于 Avro 文件在 Hive 中创建外部表,同时为目录分区添加列:

假设我有数据存储在/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 目录分区。这有可能吗?

【问题讨论】:

    标签: hive


    【解决方案1】:

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

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

    如果你有多个分区,你可以repair该表,它会自动添加它们:

    msck repair table demo
    

    【讨论】:

    • 谢谢,顺便说一下,日期(而不是 dt)是一个错字。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2019-12-29
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多