【问题标题】:What is the best way to update partitions?更新分区的最佳方法是什么?
【发布时间】:2017-05-24 04:26:22
【问题描述】:

我想使用以下代码更新分区。

msck repair table_name

(我不能使用其他选项,例如刷新语句)

但我不知道更新分区的最佳方法。

1) 我每分钟运行一次该代码。

2) 我使用 show 命令选择分区,然后如果分区不存在,则运行该代码。

show partitions table_name

什么是更新分区的最佳方式(其他选项也可以),所以搜索数据没有限制?

你能给我一个建议吗?

【问题讨论】:

  • 感谢您的评论。但我想知道如何正确使用 msck repair 命令。答案的结果是一样的,所以看起来很相似,但有点不同。

标签: hadoop hive amazon-athena


【解决方案1】:

命令msck repair table_name 很昂贵。您可以使用命令ADD PARTITION

例如

ALTER TABLE tblName ADD PARTITION (dt='2008-08-08', country='us') location '/path/to/us/part080808'

如果您不想检查分区是否存在,只需使用IF NOT EXISTS。如果不存在,它将创建分区。

ALTER TABLE tblName ADD IF NOT EXISTS PARTITION (dt='2008-08-08', country='us') location '/path/to/us/part080808' 

【讨论】:

  • 谢谢!我使用它而不是 msck 修复命令。我有个问题。 “msck repair table_name 昂贵”是什么意思?我对蜂巢不熟悉。那你能给我多解释一下吗?
  • @Bethlee msck 代表metastore check。因此,hive 尝试使用 Metastore 中的数据验证 HDFS 上的数据。如果它发现分区有任何差异,它将尝试一次或一个一个地添加这些分区。
  • @philantrovert 非常感谢您的解释!
【解决方案2】:

另一个选项也是

ALTER TABLE tblName UPDATE PARTITIONS;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2019-12-24
    • 2022-01-11
    相关资源
    最近更新 更多