hadoop - 我如何在 Pig 中将许多 map 的元组分成不同的行

标签 hadoop dictionary tuples apache-pig elephantbird

我在 Pig 中有一个如下所示的关系:

([account_id#100,
 timestamp#1434,
 id#900],

[account_id#100,
 timestamp#1434,
 id#901],

[account_id#100,
 timestamp#1434,
 id#902])

如您所见,我在一个元组中包含三个 map 对象。上面的所有数据都在关系中的第 0 个字段中。所以上面的数据与单个 bytearray 列有关。

数据加载如下:

data = load 's3://data/data' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad');

DESCRIBE data;

data: {bytearray}

如何将这个数据结构分成三行,以便输出如下?

data: {account_id:chararray, timestamp:chararray, id:int}
(100, 1434,900)
(100, 1434,901)
(100, 1434,902)

最佳答案

如果没有示例输入数据,很难猜测您的问题。如果这是中间结果,则使用 STORE 将其写出并将输出文件作为我们可以输入以进行尝试的内容。我能够使用 STRSPLIT 解决此问题,但不确定您的意思是输入是单列和单行,还是这三个不同的行具有同一列。

无论哪种情况,使用 FLATTEN 运算符展平数据并稍后使用 STRSPLIT 应该会有所帮助。如果我获得有关该问题的更多信息和输入数据,我可以给出一个工作示例。

Data -> FLATTEN to get out of bag -> STRSPLIT over "," in a FOREACH,GENERATE

关于hadoop - 我如何在 Pig 中将许多 map 的元组分成不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043445/

相关文章:

hadoop - 在 HDP 集群上安装 Snappy

python - 如何将数据帧转换为字典,保留 1 列作为键并将第二列的值与每个键相加

algorithm - 检查是否可以快速用给定的字母组成单词

python - 使用时间信息计算元组值的年平均值

python - 将元组 append 到元组

c++ - 从 std::tuple 派生时出现混淆,无法处理 std::get

scala - 在 Scala/Spark 中从 RDD 中提取数据

mysql - GROUP BY 和加入 HIVE

hadoop - 使用 mapreduce 在 hadoop 中比较文件

vba - 我可以将整数项添加到 VBA 字典 byRef