【问题标题】:Hive external table is unable to read already partitioned hdfs directoryHive 外部表无法读取已分区的 hdfs 目录
【发布时间】:2016-06-20 10:25:43
【问题描述】:

我有一个 map reduce 作业,它已经使用 hive 分区命名约定将记录写入 hdfs。

例如

/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B

创建外部表后,它看不到分区。

 create external table test_1 ( id string, name string ) partitioned by
 (code string, channel string) STORED AS PARQUET LOCATION
 '/user/test/generated'

即使使用 alter 命令

alter table test_1 ADD PARTITION (code = '1', channel = 'A')

,它看不到分区或记录, 因为

select * from test_1 limit 1 产生 0 结果。

如果我在创建外部表时使用空位置,然后使用 在路径中加载数据... 然后它工作。但问题是分区太多,加载数据路径无法正常工作。

有没有办法让 hive 自动识别分区(不做插入查询)?

【问题讨论】:

  • 能否分享一些map reduce作业的示例代码,将输出作为hive分区命名约定写入hdfs?让我知道我可以提出与此有关的问题。谢谢。任何帮助,将不胜感激。 :-)

标签: hive partition


【解决方案1】:

使用 msck,它似乎工作正常。但我不得不退出 hive 会话,然后重新连接。

MSCK REPAIR TABLE test_1

【讨论】:

  • 天才!!谢谢,有这个确切的问题。对于未来的人来说,OP 在问题中执行的手动更改命令是不必要的。只需按照约定设置目录,创建表,然后运行此修复命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 2023-03-19
  • 1970-01-01
  • 2023-03-09
  • 2020-01-06
  • 1970-01-01
  • 2020-02-21
相关资源
最近更新 更多