相关疑难解决方法(0)

Pig Latin:从日期范围加载多个文件(目录结构的一部分)

我有以下情况 -

猪版使用0.70

HDFS目录结构示例:

/user/training/test/20100810/<data files>
/user/training/test/20100811/<data files>
/user/training/test/20100812/<data files>
/user/training/test/20100813/<data files>
/user/training/test/20100814/<data files>
Run Code Online (Sandbox Code Playgroud)

正如您在上面列出的路径中看到的,其中一个目录名称是日期戳.

问题:我想从20100810到20100813之间的日期范围加载文件.

我可以将日期范围的'from'和'to'作为参数传递给Pig脚本,但是如何在LOAD语句中使用这些参数.我能够做到以下几点

temp = LOAD '/user/training/test/{20100810,20100811,20100812}' USING SomeLoader() AS (...);
Run Code Online (Sandbox Code Playgroud)

以下适用于hadoop:

hadoop fs -ls /user/training/test/{20100810..20100813}
Run Code Online (Sandbox Code Playgroud)

但是当我在猪脚本中尝试使用LOAD时它失败了.如何利用传递给Pig脚本的参数从日期范围加载数据?

错误日志如下:

Backend error message during job submission
-------------------------------------------
org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Unable to create input splits for: hdfs://<ServerName>.com/user/training/test/{20100810..20100813}
        at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:269)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:858)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:875)
        at org.apache.hadoop.mapred.JobClient.access$500(JobClient.java:170)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:793)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:752)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1062)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:752)
        at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:726)
        at org.apache.hadoop.mapred.jobcontrol.Job.submit(Job.java:378)
        at org.apache.hadoop.mapred.jobcontrol.JobControl.startReadyJobs(JobControl.java:247)
        at org.apache.hadoop.mapred.jobcontrol.JobControl.run(JobControl.java:279)
        at …
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

29
推荐指数
4
解决办法
5万
查看次数

标签 统计

apache-pig ×1

hadoop ×1