hadoop加载和存储

cngwdvgl  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(289)

当我试图运行一个pig脚本时,它有两个“store”到同一个文件

store Alert_Message_Count into 'out';
store Warning_Message_Count into 'out';

它挂起了,我的意思是在显示完成了50%之后就不能继续了。
这不对吗?我们不能将两个结果存储在同一个文件(文件夹)中吗?

2lpgd968

2lpgd9681#

hdfs没有附加模式。因此,在运行map reduce程序的大多数情况下,输出文件打开一次,写入数据,然后关闭。假设采用这种方法,就不能同时将数据写入同一个文件。
试着把文件分开写,检查map red程序是否挂起。如果他们仍然这样做,那么还有一些其他问题。
您可以获得结果并Mapreduce日志以分析出错的地方。
[编辑:]
不能写入同一文件或附加到现有文件。hdfs附加功能正在进行中。
为此,您可以做两件事:
1) 如果在alert\u message\u count和warning\u message\u count中有相同的模式内容,那么可以按照chris的建议使用union。
2) 当架构不相同时进行后期处理。即编写一个map-reduce程序,将两个独立的输出合并为一个输出。

u4dcyp6a

u4dcyp6a2#

通常,hadoopmapreduce不允许您将作业输出保存到已经存在的文件夹中,因此我猜这也不可能(因为pig将命令转换为一系列m/r步骤),但我希望出现某种形式的错误消息,而不是挂起。
如果您打开集群作业跟踪器,并查看任务的日志,日志是否会产生任何有助于进一步诊断此问题的注意事项?
可能也值得检查Pig邮件列表(如果你还没有)
如果要将一个数据集附加到另一个数据集,请使用 union 关键字:

grunt> All_Count = UNION Alert_Message_Count, Warning_Message_Count;
grunt> store All_Count into 'out';

相关问题