通过 pig 脚本删除 hive 表分区
Posted
技术标签:
【中文标题】通过 pig 脚本删除 hive 表分区【英文标题】:drop hive table partition through pig script 【发布时间】:2016-05-30 07:42:44 【问题描述】:目前我们每天都删除表格并运行将数据加载到表格中的脚本。脚本需要 3-4 小时,在此期间数据将不可用。所以现在我们的目标是让分析师可以使用旧的配置单元数据,直到新的数据加载执行完成。
我在 hql 脚本中通过将每日数据加载到按 load_year、load_month 和 load_day 分区的配置单元表并通过删除分区删除昨天的数据来实现这一点。 但是,猪脚本可以实现相同的选择是什么?我们可以通过 pig 脚本更改表格吗?我不想在猪之后执行另一个 hql 来删除分区。 谢谢
【问题讨论】:
Pig 用于数据流......所以在为过程图片正确数据挑选数据时...... 对不起。我没有得到你。我的问题与拾取数据无关,它与将数据存储在pig中以及通过pig存储删除旧数据之后。 【参考方案1】:从 HDP 2.3 开始,您可以在 Pig 脚本中使用 HCatalog 命令。因此,您可以使用 HCatalog 命令删除 Hive 表分区。以下是删除 Hive 分区的示例:
-- Set the correct hcat path
set hcat.bin /usr/bin/hcat;
-- Drop a table partion or execute other any Hcatalog command
sql ALTER TABLE midb1.mitable1 DROP IF EXISTS PARTITION(activity_id = "VENTA_ALIMENTACION",transaction_month = 1);
另一种方法是在 Pig Script 中使用 sh 命令执行。但是,我在转义 ALTER 命令中的特殊字符时遇到了一些问题。所以,我认为第一个是最好的选择。
问候, 罗伯托·塔迪奥
【讨论】:
以上是关于通过 pig 脚本删除 hive 表分区的主要内容,如果未能解决你的问题,请参考以下文章