【问题标题】:Pig: how to list Hive partitions and add new partitions to HivePig:如何列出 Hive 分区并将新分区添加到 Hive
【发布时间】:2015-08-31 23:01:50
【问题描述】:

我有一个 Hive 表:

CREATE EXTERNAL TABLE IF NOT EXISTS t1 (
    column1 string,
    column2 string
) PARTITIONED BY (datestamp string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/path';

在 Hive 中,我可以列出该表的分区:show partitions t1 在 Hive 中,我可以向该表添加分区:add partition...

如何在 Pig (Grunt) 中执行这两个命令? (显示 Hive 分区和添加 Hive 分区)

我在org.apache.hcatalog.pig.HCatLoader() 中找不到用于 Pig 的这 2 个命令(列出分区、添加分区)

Pig 是否有任何工作示例可以执行这 2 个命令?

【问题讨论】:

    标签: hadoop hive apache-pig add partition


    【解决方案1】:

    在 grunt 中,您可以使用 sh 运行 shell 命令。

    所以试试这个

    grunt> sh hive -e "SHOW databases"
    grunt> sh hive -e "USE database;ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;"
    

    【讨论】:

    • 这可行,但正在启动 Hive 的新实例以做到这一点.. 我希望它可以比每次启动新 Hive 做得更快.. 类似“短路”访问以便显示/添加分区..
    • 没有别的办法,你可以对表位置执行ls来查看分区,但不建议这样做,有时分区可能不会添加到元数据中。
    • 有没有办法让 Hive shell 始终打开并启动对 Hive 的外部请求(来自外部脚本 - 例如来自 Pig 或 Shell 脚本)?目前每次打开新的 Hive 会话需要超过 20 秒,直到它加载所有库..
    • 我不这么认为,我猜你没有其他选择。
    猜你喜欢
    • 2017-03-09
    • 2015-06-12
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多