我怎么看Pig的袋子清单?我试过:
grunt> cat sample.txt {a,b},{},{c,d} grunt> data = LOAD 'sample.txt' AS (a:bag{}, b:bag{}, c:bag{}); grunt> DUMP data ({},,)
ajsxfq5m1#
将数据读入pig的默认方法是 PigStorage('\t') --也就是说,它假设您的数据是以制表符分隔的。你的是逗号分隔的。所以你应该写 LOAD 'sample.txt' USING PigStorage(',') AS... .但是,您的数据不是正确的Pig袋格式。记住,包是元组的集合。如果不能预处理输入,则必须编写一个自定义项来解析给定表单的输入。所以这应该行得通:
PigStorage('\t')
LOAD 'sample.txt' USING PigStorage(',') AS...
grunt> cat tmp/data.txt {(a),(b)},{},{(c),(d)} grunt> data = LOAD 'tmp/data.txt' USING PigStorage(',') AS (a:bag{}, b:bag{}, c:bag{}); grunt> DUMP data; (,,{})
出什么事了?输入字段分隔符( , )是一样的袋记录分离器是混淆Pig。它将您的输入解析到字段中 {(a) , (b)} ,和 {} ,这就是为什么只有第三个字段最终成为一个包。这就是为什么你会看到这样的警告信息 Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 time(s) .如果可以,请尝试使用制表符或空格(或分号或…)而不是逗号:
,
{(a)
(b)}
{}
Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 time(s)
grunt> cat tmp/data.txt {(a),(b)} {} {(c),(d)} grunt> data = LOAD 'tmp/data.txt' AS (a:bag{}, b:bag{}, c:bag{}); grunt> DUMP data; ({(a),(b)},{},{(c),(d)})
1条答案
按热度按时间ajsxfq5m1#
将数据读入pig的默认方法是
PigStorage('\t')
--也就是说,它假设您的数据是以制表符分隔的。你的是逗号分隔的。所以你应该写LOAD 'sample.txt' USING PigStorage(',') AS...
.但是,您的数据不是正确的Pig袋格式。记住,包是元组的集合。如果不能预处理输入,则必须编写一个自定义项来解析给定表单的输入。所以这应该行得通:
出什么事了?输入字段分隔符(
,
)是一样的袋记录分离器是混淆Pig。它将您的输入解析到字段中{(a)
,(b)}
,和{}
,这就是为什么只有第三个字段最终成为一个包。这就是为什么你会看到这样的警告信息Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 time(s)
.如果可以,请尝试使用制表符或空格(或分号或…)而不是逗号: