读取不良名称gzip压缩json文件以触发数据框

时间:2019-05-28 15:30:49

标签: json apache-spark amazon-s3 pyspark gzip

我正在将Spark作业移至Amazon EMR,并希望从Spark数据框中的S3中读取gzip压缩的json文件。这些文件的大小约为4 TB。

问题是这些文件在S3中的命名结构不正确,名称格式:name:gz:name-ID:DD-MM-YY@timestamp

我从本地计算机上的S3下载了一个小文件,并尝试使用以下命令在Spark中读取文件:

df = spark.read.option('compression', 'gzip').json('s3file')

但是调用df.show()(最后检查回溯)后出现错误

但是,在将其重命名为s3file.gz后,我可以读取该文件。我无法更改这些文件在S3上的命名结构,因为它们是由不同的过程生成的。复制此数据并将其重命名到其他目录非常昂贵,我希望避免这样做。我尝试将模式传递给上述命令,但这也不起作用。期待有关如何将这些名称不正确的gzip json文件从S3读取到spark数据帧的建议。谢谢

  File "/usr/hdp/current/spark2-client/python/pyspark/sql/utils.py", line 63, in deco
    return f(*a, **kw)
  File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o114.showString.
: org.apache.spark.sql.AnalysisException: Since Spark 2.3, the queries from raw JSON/CSV files are disallowed when the
referenced columns only include the internal corrupt record column
(named _corrupt_record by default)```

0 个答案:

没有答案