我想将列表作为值从映射器传递到缩减器阶段。目前,缩减器将列表作为字符串读取。有没有一种方法可以确保 python 可以将其解释为列表。
最佳答案
Hadoop 流使用stdin
和stdout
进行通信;因此,进入每个后续作业的所有内容都将是一个字符串。您可以在表示中使用某种分隔符,例如逗号:
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/