【发布时间】:2013-11-26 19:08:05
【问题描述】:
我正在尝试将一个数据集附加到 Apache Pig 中的另一个数据集。有几个例子,但我认为这与我的问题不同。
这是我的猪脚本:
line1 = 使用 Table() 加载“line1/points”;
line20 = 使用 Table() 加载“line20/points”;
描述第 1 行;
转储第 1 行;
描述第 20 行;
转储第 20 行;
X = UNION line1, line20;
描述 X;
转储 X;
我明白了:
line1: {key: bytearray,y: (name: chararray,value: long),x: (name: chararray,value: long),columns: {(name: chararray,value: bytearray)}}
(ab48a8567d58cfea52905db0e94d88d3,(y,3),(x,3))
(ab48a8567d58cfea52905db0e94d88d3,(y,1),(x,1))
(ab48a8567d58cfea52905db0e94d88d3,(y,2),(x,2))
line20: {key: bytearray,y: (name: chararray,value: long),x: (name: chararray,value: long),columns: {(name: chararray,value: bytearray)}}
(203146881b7ef0d26902ea440e734b79,(y,20),(x,20))
(203146881b7ef0d26902ea440e734b79,(y,21),(x,21))
(203146881b7ef0d26902ea440e734b79,(y,22),(x,22))
X: {key: bytearray,y: (name: chararray,value: long),x: (name: chararray,value: long),columns: {(name: chararray,value: bytearray)}}
(203146881b7ef0d26902ea440e734b79,(y,21),(x,21))
(203146881b7ef0d26902ea440e734b79,(y,22),(x,22))
(203146881b7ef0d26902ea440e734b79,(y,20),(x,20))
(203146881b7ef0d26902ea440e734b79,(y,20),(x,20))
(203146881b7ef0d26902ea440e734b79,(y,21),(x,21))
(203146881b7ef0d26902ea440e734b79,(y,22),(x,22))
结果只是“line20”数据集的双重副本。为什么?
我想从“line1”获取值,然后从“line20”获取值。
顺便说一句:...使用 Table(); - 这只是我对 CassandraStorage 的实现,我在其中自动为列提供类型。
感谢您的帮助!
解决方案
Configuration 已共享。我忘记了,我为两个 Table() 实例使用相同的 ID 来初始化它们。
【问题讨论】:
-
如果您可以将示例数据减少到几行/几列 - 这会有所帮助。
-
完成。我希望它有所帮助。
-
谢谢。这看起来真的很奇怪。我会尝试将文本文件作为输入做同样的事情,用普通的 PigStorage 加载它们。只是为了进行健全性检查。如果这有帮助,那么我会得出结论,问题出在 Table() 中。您确定这两个调用不会相互重叠吗?
-
是的,
UNION在两个加载有... PigStorage(',');的文件上工作正常。我刚刚检查过了。不,这两个Table()调用不会相互重叠。但是,我将在我的Table()课程中搜索问题。谢谢。 -
我错了。对不起。两个
Table()实例确实重叠。 @Pradeep Gollakota 指出配置对象是共享的。那是我的错误。感谢您的帮助。
标签: cassandra apache-pig