从 oozie 以本地模式运行 PIG
Posted
技术标签:
【中文标题】从 oozie 以本地模式运行 PIG【英文标题】:Run PIG in local mode from oozie 【发布时间】:2015-08-03 10:35:29 【问题描述】:我想在本地模式下运行PIG,非常简单
猪 -x 本地 file.pig
我的要求是从 OOZIE 以本地模式运行 PIG? 有没有可能我认为OOZIE会先自动启动地图任务?
【问题讨论】:
【参考方案1】:这是可能的。当 Oozie 运行 pig 脚本时,它作为 one-map map-reduce 作业运行,它只运行 pig 脚本,然后运行其他 map-reduce 作业(当 pig 在mapred
模式下运行时)。
看起来,Pig 动作配置不允许在本地模式下运行,但您仍然可以使用 shell 动作类型在本地模式下运行 Pig 脚本。您只需确保您的脚本、输入和输出数据都在 HDFS 中。
【讨论】:
感谢您的回答但是 Pig 在本地模式下从本地文件系统而不是 HDFS 加载/存储数据。将猪放在 hdfs 上有意义,但 hdfs 上的输入和输出路径有意义吗?你能告诉我如何为此编写 oozie 工作流程吗? 你应该知道 Oozie 是如何运行的。它将pig 或shell 脚本作为map-reduce 作业运行,只有一个mapper,没有reducer。因此,从 map-reduce 集群中随机选择一个执行节点。所以你不能提前说哪个节点会运行你的脚本。因此,使用本地文件系统没有意义,请使用 HDFS,因为它在所有节点上都可用。使用 'hdfs://namenode:port/path/to/file' 形式的完整 URI 在 pig 脚本中引用 HDFS 路径。 如果您在使用 Oozie 在本地模式下运行 pig 很有用时提供了一些推理,那就太好了。 所有作业调度我们都使用 oozie 框架,所以我们希望使用相同的框架,但在本地模式下运行 pig,因为数据量较少,本地模型比 mapred 模式更快【参考方案2】:我不认为,我们可以从 oozie 以本地模式运行 pig。 Vishal 写的评论是有道理的。在某些数据量较少的情况下,最好在本地模式下使用 pig。要在本地模式下运行,您可以通过编写 shell 脚本并在 crontab 中安排它来运行。如果您通过 oozie 尝试此操作。据我所知,它不太适合,因为 Oozie 旨在在 HDFS 中运行。
如果你想让 oozie 在一些数据上运行。它希望数据在 HDFS 中(即分布式)。而且您必须在 hdfs 中也有 pig 脚本。我记得看到 AlanGates 的帖子,他提到 PIG 旨在处理来自/到 HDFS 的数据,而 hive 是本地的HDFS 或 HDFS 到 HDFS。
【讨论】:
以上是关于从 oozie 以本地模式运行 PIG的主要内容,如果未能解决你的问题,请参考以下文章