python - MapReduce using hadoop streaming via python - 将列表从映射器传递到缩减器并将其作为列表读取

标签 python hadoop mapreduce hadoop-streaming

我想将列表作为值从映射器传递到缩减器阶段。目前,缩减器将列表作为字符串读取。有没有一种方法可以确保 python 可以将其解释为列表。

最佳答案

Hadoop 流使用stdinstdout 进行通信;因此,进入每个后续作业的所有内容都将是一个字符串。您可以在表示中使用某种分隔符,例如逗号:

the, items, in, my, list

然后将它们拆分到你的 reducer 中:

for line in sys.stdin:
    data = line.split(',')

如果你想让它成为一本字典:

import ast

for line in sys.stdin:
    dict = ast.literal_eval("{'waffle': 'delicious', 'pancake': 'mediocre'}")

虽然您正在读取标准输入流,但无法知道它是一个列表。

关于python - MapReduce using hadoop streaming via python - 将列表从映射器传递到缩减器并将其作为列表读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885354/

相关文章:

python - 没有过滤器的列表理解

hadoop - 带有Iceberg和S3的独立配置单元metastore

scala - 如何使用 `ssc.fileStream()` 读取 Parquet 文件?传递给 `ssc.fileStream()` 的类型是什么?

go - 关闭具有循环依赖性的 channel

mongodb - 在 MongoDB map-reduce 中计算距离

python - 获取包含相同前缀和后缀的字符串列表中的特定字符串

python - 在单独的线程中扭曲传输。

hadoop - HBase删除多行的高效方法

python - 在 Python 中评估动态生成的语句

hadoop - 在本地PC和SSH根目录上安装HUE或Spark,以访问我公司的Cloudera?