Hadoop 如何在Apache Pig中加载包数据

Hadoop 如何在Apache Pig中加载包数据,hadoop,hbase,apache-pig,Hadoop,Hbase,Apache Pig,这是我的样品袋数据,我的文件名是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)} 现在,当我使用 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

这是我的样品袋数据,我的文件名是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)}
现在,当我使用

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)},)

在上面的结果中,第二个包未处理。

默认情况下,用于读取Pig中文件的分隔符为tab(\t)。因为您的记录是逗号分隔的包。请尝试使用PigStorage(,)


此数据不是清管器可以处理的格式,因为袋内的记录分隔符类似于行中字段之间的记录分隔符,即“,”,因此只能使用UDF进行此操作

但如果我们将记录中的字段分隔符表示为分号“

然后,我们可以使用以下方式加载数据:

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;

如果我使用上面的语句,我得到的结果是(,)(,)(,)编辑了查询..尝试此检查:如果我尝试上面的查询,我得到的结果是相同的输出也(,)(,)检查此:
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;