目前我们每天都在删除表并运行将数据加载到表中的脚本。脚本需要3-4小时,在此期间数据将不可用。所以现在我们的目标是让分析人员可以使用旧的hive数据,直到新的数据加载执行完成为止。
我在hql脚本中通过将每日数据加载到在load_year,load_month和load_day上分区的hive表并通过删除分区来删除昨天的数据来实现这一点。 但是猪脚本实现同样的选择是什么?我们可以通过猪脚本改变表吗?我不想在猪之后执行其他hql来删除分区。 谢谢
答案 0 :(得分:0)
从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命令中转义特殊字符时遇到了一些问题。所以,在我看来,第一个是最好的选择。
此致 罗伯托·塔尔迪奥