如何在 PIG 脚本中从数据包中读取数据
Posted
技术标签:
【中文标题】如何在 PIG 脚本中从数据包中读取数据【英文标题】:How to read data from data bag within a PIG script 【发布时间】:2011-02-09 13:16:21 【问题描述】:我有一个数据包,格式如下
([ChannelName# (bigXML,[]) ])
我有一个发射上述包的 UDF。
现在我需要通过将 DataBag 中唯一的元组传递给 Map 中的给定 Channel 来调用另一个 UDF。
假设没有数据包和元组
([ChannelName# (bigXML,[]) ])
我可以使用$0.$0#'StdOutChannel'
访问数据
现在将元组放在一个袋子里
([ChannelName# (bigXML,[]) ])
如果我这样做$0.$0.$0#'StdOutChannel'
(前置$ 0),我会收到以下错误
ERROR 1052: Cannot cast bag with schema bag(bytearray) to map
如何访问数据包中的数据?
【问题讨论】:
【参考方案1】:试着把这个问题分解一下。
假设你拿到了你的内袋:
MYBAG = $0.$0#'StdOutChannel';
首先,你能ILLUSTRATE
或DUMP
这个吗?
你可以用这个包做什么?通常FOREACH
在里面的元组上。
A = FOREACH MYBAG
GENERATE $0 AS MyCharArray, $1 AS MyMap
;
ILLUSTRATE A; -- or if this doesn't work
DUMP A;
您能否以交互方式尝试此操作,并且在您尝试这些操作后,也许可以用一些细节来编辑您的问题。
*** 的一些编辑提示:
在您的代码周围加上反引号 (`ILLUSTRATE`) 代码块每行缩进 4 个空格【讨论】:
以上是关于如何在 PIG 脚本中从数据包中读取数据的主要内容,如果未能解决你的问题,请参考以下文章