gpt4 book ai didi

python - 将 JSON 参数作为字符串传递给 python hadoop 流应用程序

转载 作者:可可西里 更新时间:2023-11-01 14:23:58 24 4
gpt4 key购买 nike

我想将一个 JSON 字符串作为命令行参数传递给我的 reducer.py 文件,但我无法这样做。

我执行的命令是:

hadoop jar contrib/streaming/hadoop-streaming.jar -file /home/hadoop/mapper.py -mapper 'mapper.py' -file /home/hadoop/reducer.py -reducer 'reducer.py {"abc":"123"}' -input /user/abc.txt -output /user/output/

当我在 reducer.py 中打印 argv 数组时,它显示输出为:

['/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1423459215008_0057/container_1423459215008_0057_01_000004/./reducer.py', '{', 'abc', ':', '123', '}']

第一个参数是 reducer.py 的路径,但我的第二个参数被双引号分隔。

我想将第二个参数作为完整的 JSON 字符串实现。例如:['/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1423459215008_0057/container_1423459215008_0057_01_000004/./reducer.py','{"abc":"123"}']

这样我就可以将该参数作为 Json 加载到 reducer.py 中

感谢任何帮助。谢谢!

编辑:尝试使用命令转义 JSON:

hadoop jar contrib/streaming/hadoop-streaming.jar -file /home/hadoop/mapper.py -mapper 'mapper.py' -file /home/hadoop/reducer.py -reducer 'reducer.py "{\"abc\":\"123\"}"' -input /user/abc.txt -output /user/output/

输出为:

['/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1423459215008_0058/container_1423459215008_0058_01_000004/./redu.py', '{\\', 'abc\\', ':\\', '123\\', '}']

最佳答案

您需要将您的 json 放在双引号内并进行适当的转义:"{\"abc\":\"123\"}" 但是您的输入很可能会在 Hadoop 处理之前被处理传递给您的脚本。

如果这不起作用,您可以尝试使用 -cmdenv name=value 通过环境传递您的参数。参见 How do I pass a parameter to a python Hadoop streaming job?了解更多详情。

关于python - 将 JSON 参数作为字符串传递给 python hadoop 流应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com