如何猪脚本
问题描述:
中读取数据包数据我有一个databag是以下格式 {([ChannelName#{ (bigXML,[])} ])}
如何猪脚本
- DataBag仅由一个项目是一个元组。
- 元组只包含Map的项目。
- 地图是类型,它是频道名称和值之间的映射。
- 这里的值是DataBag类型,它只包含一个元组。
- 元组包括两个项目一个是charrarray(非常大的字符串)和另一种是地图
我发出上述袋一个UDF。
现在我需要调用另一个UDF,通过将DataBag中的唯一元组传递给Map中给定的Channel。
假设有没有数据包和一个元组作为 ([ChannelName#{ (bigXML,[])} ])
我可以用元组使用$0.$0#'StdOutChannel'
访问数据现在一个袋子里面 {([ChannelName#{ (bigXML,[])} ])}
如果我做$0.$0.$0#'StdOutChannel'
(前置$ 0),我收到以下错误 ERROR 1052: Cannot cast bag with schema bag({bytearray}) to map
如何访问数据包内的数据?
答
试着打破这个问题一点点。
比方说,你让你的内袋:
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位放反引号