如何猪脚本

问题描述:

中读取数据包数据我有一个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'; 

首先,你能ILLUSTRATEDUMP呢?

你可以用这个包做什么?通常在FOREACH以上的元组里面。

A = FOREACH MYBAG { 
    GENERATE $0 AS MyCharArray, $1 AS MyMap 
}; 

ILLUSTRATE A; -- or if this doesn't work 
DUMP A; 

你可以尝试这种交互方式,也许编辑你的问题多一些细节作为你尝试这些事情的结果。

用于*的一些编辑提示:

  • 在你的代码(`ILLUSTRATE`)每行
  • 缩进代码块由4位放反引号