我试图在Apache中将一个数据集附加到另一个数据集中。有几个例子,但我认为这与我的问题不同。
这是我的猪剧本:
line1 =使用Table()加载‘line1/point’; line20 =使用Table()加载‘line20 20/point’; 描述line1; 转储line1; 描述line20; 转储line20; X= UNION line1,line20; 描述X; 倾倒X;
我明白了:
line1:{key: bytearray,y:(name: chararray,value: long),x:(name: chararray,value: long),列:{(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),列:{(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),列:{(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”中的值,然后是“行20”中的值。
顺便说一句..。使用Table();-这只是我的CassandraStorage实现,在这里我自动为列提供类型。
谢谢你的帮忙!
溶液
Configuration是共享的。我忘记了,我用相同的ID对两个Table()实例进行初始化。
发布于 2013-11-27 06:39:37
在使用Accumulo时,我遇到了类似的问题。猪试图在两个Accumulo表上做一个Map侧连接。但是,由于配置对象的重用,API不支持同时读取多个表,因此无法做到这一点。HBase没有这个问题,因为即使配置对象是共享的,多个表配置也存储在不同的键下。我没有和卡桑德拉合作过,所以我不太确定。但是我想这是Table() LoadFunc的一个问题。检查以确保LoadFunc没有从LoadFunc的多次调用中破坏配置。
一个快速的测试方法是改变联盟中关系的顺序。我敢打赌,如果你写UNION line20, line1;,你会看到两份line1。
https://stackoverflow.com/questions/20225842
复制相似问题