spark2集群模式下的JSON解码错误,在客户端模式下工作正常

时间:2017-08-23 21:02:27

标签: python json apache-spark pyspark spark-submit

使用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"
}

这似乎是一种非常奇怪的行为。任何见解都会非常有用。

0 个答案:

没有答案