这是我的样本包数据,我的文件名是bag.txt:
{(8,9),(0,1)},{(8,9),(1,1)}
{(2,3),(4,5)},{(2,3),(4,5)}
{(6,7),(3,7)},{(2,2),(3,7)}
现在我想在使用
加载此数据时在我的Apache Pig shell中加载此数据A = LOAD '/home/mvsubhash/Desktop/bag.txt' AS (B1:bag{T1:tuple(t1:int,t2:int)},B2:bag{T2:tuple(f1:int,f2:int)});
但我的最终结果是这样的
({(8,9),(0,1)},)
({(2,3),(4,5)},)
({(6,7),(3,7)},)
在上面的结果中,第二个包没有处理。
答案 0 :(得分:0)
默认情况下,用于在Pig中读取文件的分隔符是tab(\ t)。因为你的记录是逗号分隔的bag.Try使用PigStorage(,)
A = LOAD '/home/mvsubhash/Desktop/bag.txt' USING PigStorage(',') AS (B1:bag{},B2:bag{});
答案 1 :(得分:0)
这个数据不是Pig可以处理的格式,因为bag中的记录分隔符类似于行中字段之间的记录分隔符,即','所以这只能使用UDF来完成。
但是如果我们将记录中的字段分隔符表示为Semicolon“;”
然后我们可以使用以下方法加载数据:
grunt> Data = load 'bag_data' using PigStorage(';') as (Bag1:bag{tuple1:(A1:int,A2:int)},Bag2:bag{tuple2:(B1:int,B2:int)});
grunt> Dump Data;