使用 spark-submit cmd(Spark2 CDH 5.9) 运行 python 脚本,我只在集群模式下收到以下 json 解码错误(客户端很好):
e.g.
Traceback (most recent call last):
File "dummy.py", line 115, in <module>
cfg = json.loads(args.params)
File "/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 863 (char 862)
我了解上述错误是由于无效的 json 造成的。但是,传递给脚本的 json 是有效的(前面解释过)。似乎 spark-submit 集群模式正在修改 python 脚本的 json 参数。我比较了“客户端”和“集群”模式下的日志,发现客户端中的 json arg 保持原样,而在集群模式下被修改。
我传递的 json 具有这样的结构:
{
"X": {
"A": {
"a": "b",
"c": "d"
}
},
"Y": ["e", "f"],
"Z": "g"
}
客户端模式按原样接收它,其中集群模式获得以下内容:
{
"X": {
"A": {
"a": "b",
"c": "d",
"Y": ["e", "f"],
"Z": "g"
}
这似乎是一个非常奇怪的行为。任何见解都会非常有帮助。