Я пишу приложение pyspark, которое читает json файлы (из относительного пути), хранящиеся в S3.
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)
Я понимаю, что spark / had oop не принимает имена файлов, содержащие ":", но я ожидал, что Spark начнет читать только файлы, начинающиеся с с "Test", который явно не соответствует имени файла "draft_311819_2019-11-05T17: 09: 22.812Z. json".
Файлы, начинающиеся с черновика, создаются другим приложением, и я не могу изменить их имена для удаления ":".
Когда я нацеливаюсь на указанную папку c 19-11-15, приложение работает просто отлично: ошибки не возникает.
rdd= spark.read.json("s3://data/19-11-15/Test-*.json", multiLine=True)
Не могли бы вы есть идеи как преодолеть эту проблему?
спасибо.