如何从 HDFS 运行猪脚本?

Posted

技术标签:

【中文标题】如何从 HDFS 运行猪脚本?【英文标题】:How to run pig scripts from HDFS? 【发布时间】:2017-08-27 19:38:04 【问题描述】:

我正在尝试从 hdfs 运行 pig 脚本,但由于文件不存在而显示错误。

我的 hdfs 目录

[cloudera@quickstart ~]$ hdfs dfs -ls /
Found 11 items
drwxrwxrwx   - hdfs     supergroup          0 2016-08-10 14:35 /benchmarks
drwxr-xr-x   - hbase    supergroup          0 2017-08-19 23:51 /hbase
drwxr-xr-x   - cloudera supergroup          0 2017-07-13 04:53 /home
drwxr-xr-x   - cloudera supergroup          0 2017-08-27 07:26 /input
drwxr-xr-x   - cloudera supergroup          0 2017-07-30 14:30 /output
drwxr-xr-x   - solr     solr                0 2016-08-10 14:37 /solr
-rw-r--r--   1 cloudera supergroup        273 2017-08-27 11:59 /success.pig
-rw-r--r--   1 cloudera supergroup        273 2017-08-27 12:04 /success.script
drwxrwxrwt   - hdfs     supergroup          0 2017-08-27 12:07 /tmp
drwxr-xr-x   - hdfs     supergroup          0 2016-09-28 09:00 /user
drwxr-xr-x   - hdfs     supergroup          0 2016-08-10 14:37 /var 

执行的命令

[cloudera@quickstart ~]$ pig -x mapreduce /success.pig 

错误信息

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2017-08-27 12:34:39,160 [main] INFO  org.apache.pig.Main - Apache Pig version 0.12.0-cdh5.8.0 (rexported) compiled Jun 16 2016, 12:40:41
2017-08-27 12:34:39,162 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/cloudera/pig_1503862479069.log
2017-08-27 12:34:47,079 [main] ERROR org.apache.pig.Main - ERROR 2997: Encountered IOException. File /success.pig does not exist
Details at logfile: /home/cloudera/pig_1503862479069.log

我错过了什么?

【问题讨论】:

脚本应该在本地FS 有从 hdfs 运行脚本的例子。如果脚本需要在本地 FS 上,那么 -x mapreduce 有什么用。 输入输出数据在HDFS上。 【参考方案1】:

您可以使用-f <script location> 选项和选项值来运行位于 HDFS 路径的脚本。但是脚本位置需要是以下语法和示例中给出的绝对路径。

Syntax: 
pig -f <fs.defaultFS>/<script path in hdfs>

Example: 
pig -f hdfs://Foton/user/root/script.pig 

【讨论】:

以上是关于如何从 HDFS 运行猪脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何将猪输出存储到蜂巢表?

如何在hadoop pig中执行-fs

如何从 grunt shell 以猪拉丁语运行宏?

如何使用 PIG 将 Avro 格式存储在 HDFS 中?

从 oozie 提交猪作业

一个猪脚本中的两个存储功能