将一个列表从mapper传递到reducer并作为列表读取

ljsrvy3e  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(421)

我想将list作为值从mapper传递到reducer阶段。当前,reducer将list作为字符串读取。有没有一种方法可以确保python可以将其解释为一个列表。

9njqaruj

9njqaruj1#

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

the, items, in, my, list

然后在减速机里把它们分开:

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

如果你想把它变成一本字典:

import ast

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

因为您正在读取标准输入流,所以无法知道它是一个列表。

pod7payv

pod7payv2#

在reducer中使用ast.literal\u eval('str\u val'),并将字符串转换为list。有关更多信息,请参阅https://docs.python.org/2/library/ast.html

相关问题