Pig:在表中加载,然后在转换后覆盖该表

时间:2013-10-07 18:58:48

标签: apache-pig overwrite

假设我有一张桌子:

db.table

我加载表并对其进行一些转换,最后尝试存储它

mytable = LOAD 'db.table' USING HCatLoader();

.
.
-- My transforms
.
.

STORE mytable_final INTO 'db.table' USING HCatStorer();

但是代码抱怨我正在写一个包含现有数据的表。

我看过这个JIRA ticket,这似乎是无效的(我在STORE命令的几个地方尝试过使用FORCE和OVERWRITE)。

我也查看了this SO帖子,但是作者正在从一个位置加载并存储在不同的位置。如果我使用该帖子中的内容,则转换的结果不是数据。删除文件不是一个选项。我想暂时存储文件,但我不知道这是否是最好的选择。

我正在尝试使用INSERT OVERWRITE获取您在Hive中获得的行为。

1 个答案:

答案 0 :(得分:2)

我不熟悉HCatLoaderHCatStorer。但是如果您从LOADSTORE到HDFS,Pig提供了shell命令,使您可以在脚本中执行删除和移动。

STORE A INTO '/this/path/is/temporary';
RMF '/this/path/is/permanent';
MV '/this/path/is/temporary' '/this/path/is/permanent';