Pyspark 读取 json:java.net.URISyntaxException:绝对 URI 中的相对路径

ah_*_*ben 6 json apache-spark pyspark

我正在编写一个 pyspark 应用程序,它读取存储在 S3 中的 json 文件(从相对路径)。

rdd= spark.read.json("s3://data/19-11-*/Test-*.json", multiLine=True)

我收到一个异常,因为文件夹 19-11-15 包含一个包含“:”的文件名。

java.net.URISyntaxException: Relative path in absolute URI: draft_311819_2019-11-05T17:09:22.812Z.json'
Traceback (most recent call last):
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 274, in json
    return self._df(self._jreader.json(self._spark._sc._jvm.PythonUtils.toSeq(path)))
  File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 79, in deco
    raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
Run Code Online (Sandbox Code Playgroud)

我知道 Spark / hadoop 不接受包含“:”的文件名,但我希望 Spark 只读取以“Test”开头的文件,这显然不是文件名“draft_311819_2019-11-05T17:09:22.812Z”的情况。 json”。

以草稿开头的文件是由另一个应用程序生成的,我无法更改它们的名称以删除“:”。

当我定位 19-11-15 的特定文件夹时,应用程序运行良好:没有出现错误。

rdd= spark.read.json("s3://data/19-11-15/Test-*.json", multiLine=True)

您知道如何克服这个问题吗?

谢谢。