JCascalog/Pail切碎阶段在本地工作,但在Hadoop中不工作

JCascalog/Pail切碎阶段在本地工作,但在Hadoop中不工作,hadoop,cascalog,lambda-architecture,Hadoop,Cascalog,Lambda Architecture,接下来,我得到了一个充满类型化Thift数据对象的传入目录,其中包含一个DataPailStructure定义的pail.meta文件 我对这些数据进行了快照: Pail snapshotPail = newDataPail.snapshot(PailFactory.snapshot); 传入文件和元数据文件是重复的,pail.meta文件也有 structure: DataPailStructure 现在我想将这些数据分割成垂直分区。从书中开始,我创建了两个PailTap对象,一个用于快照

接下来,我得到了一个充满类型化Thift数据对象的传入目录,其中包含一个DataPailStructure定义的pail.meta文件

我对这些数据进行了快照:

Pail snapshotPail = newDataPail.snapshot(PailFactory.snapshot);
传入文件和元数据文件是重复的,pail.meta文件也有

structure: DataPailStructure
现在我想将这些数据分割成垂直分区。从书中开始,我创建了两个PailTap对象,一个用于快照和SplitDataStructure,一个用于新的分解文件夹

/shrested文件夹有一个pail.meta文件,其结构为:SplitDataPailStructure

按照说明,我执行JCascalog查询以强制减速器:

Api.execute(sink, new Subquery(data).predicate(reduced, empty, data));
现在,在本地模式下,这可以正常工作。在/shrested下创建了一个“临时”子文件夹,该子文件夹使用预期的“1/1”结构进行垂直分区。在本地模式下,这将被移动到/shrested文件夹,我可以毫无问题地合并到master

但在Hadoop内部运行时,它在这一点上失败,并出现错误:

cascading.tuple.TupleException: unable to sink into output identifier: /tmp/swa/shredded 
...
Caused by: java.lang.IllegalArgumentException: 1/1/part-000000 is not valid with the pail structure {structure=com.hibu.pail.SplitDataPailStructure, args={}, format=SequenceFile} --> [1, _temporary, attempt_1393854491571_12900_r_000000_1, 1, 1] at com.backtype.hadoop.pail.Pail.checkValidStructure(Pail.java:563)
不用说,如果我将切碎的接收器结构类型更改为DataPailStructure,那么它可以正常工作,但这是一个相当无意义的操作,因为传入文件夹中的一切都是这样。现在还可以,因为我只处理一种数据类型,但这很快就会改变,我需要那个分区


有什么想法吗?最初我不想在这里发布我的所有源代码,但我几乎肯定遗漏了一些东西。

如果其他人遇到这种情况,这与PailStructure方法上的isValidTarget方法有关-出于某种原因,“1/1/part-000000”被作为目标传递,而不是“1/1”,其中“part-000000”是数据文件
cascading.tuple.TupleException: unable to sink into output identifier: /tmp/swa/shredded 
...
Caused by: java.lang.IllegalArgumentException: 1/1/part-000000 is not valid with the pail structure {structure=com.hibu.pail.SplitDataPailStructure, args={}, format=SequenceFile} --> [1, _temporary, attempt_1393854491571_12900_r_000000_1, 1, 1] at com.backtype.hadoop.pail.Pail.checkValidStructure(Pail.java:563)