【发布时间】:2021-10-22 03:59:39
【问题描述】:
我创建了一个名为 my_dict 的 Python 字典,其中包含一些元数据。我通过json.dumps() 将 my_dict 转换为字符串。 my_dict 然后通过add_job_flow_steps 作为 HadoopJarStep 中的参数传递给 EMR。
提交步骤后,用户界面中 EMR 步骤的参数部分中的参数如下所示:
--my_dict "{\"level_one_key\": {\"level_two_key\": \"level_two_value\"}}"
现在,我还将一个名为execute.py 的python 文件传递给EMR 以运行。上述参数被传递到execute.py 的主函数中,在那里它立即转换为带有json.loads() 的字典。它看起来像:
parser.add_argument('--my_dict', type=json.loads, required=False)
问题:当我传递一个嵌套字典时,该步骤在 20 秒内失败,原因是 UNKOWN ERROR,并且没有写入任何日志。 :(
但是,当我将它作为平面字典传递时,例如:
--my_dict "{\"level_one_key\": \"level_one_value\"}"
效果很好。
我不想发布太多我的代码,因为这是与工作相关的。但我错过了什么吗?我觉得我应该能够通过嵌套字典没问题。我还尝试在将字典传递给 main 后对其进行转换,如下所示:
parser.add_argument('--my_dict', type=str, required=False)
my_dict = json.loads(args.my_dict)
但它仍然失败。有什么想法吗?
更新:当嵌套字典在execute.py中解析为str(而不是使用json.loads)后打印出来时,它看起来像:
{"level_one_key": {"level_two_key": "level_two_value"
它缺少字典的最后两个括号......无论出于何种原因。显然,这是导致错误的原因,但我不知道为什么它没有将整个字典传递给 main。
【问题讨论】:
-
你能在解析后打印出你的字典并确保它被正确解析吗?
-
@KyleParsons - 我添加了打印输出。
标签: python dictionary nested amazon-emr