pyspark в AWS клей пропустить плохой файл - PullRequest
2 голосов
/ 23 марта 2020

Я использую pyspark в AWS Клей для чтения файлов ETL 100K S3, однако у меня нет прав на чтение десятков файлов.

Я использовал следующий код:

datasource0 = glueContext.create_dynamic_frame_from_options("s3",
    {'paths': ["s3://mykkkk-test"],
    'recurse':True,
    'groupFiles': 'inPartition',
    'groupSize': '10485760'}, 
    format="json",
    transformation_ctx = "datasource0")
## @type: toDF
## @args: []
## @return: df
## @inputs: [frame = datasource0]
df = datasource0.toDF()

Там написано

An error occurred while calling o70.toDF. java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
...
Caused by: java.io.FileNotFoundException: No such file or directory
s3://mykkkk-test/1111/2222/3333.json

У меня нет разрешения на чтение 3333. json, затем вся работа остановилась.

Есть ли способ перехватить исключение и пропустить файлы и позволить сценарию продолжить обработку других файлов?

1 Ответ

0 голосов
/ 25 марта 2020

Нет, вы не можете ... Это потому, что spark предполагает, что я могу получить доступ ко всем файлам данных в папке, которую вы указали в качестве источника. Лучшим вариантом было бы заранее определить список файлов, к которым у вас есть доступ, переместить их в другую папку и затем прочитать данные оттуда.

Или попытаться получить список файлов, к которым у вас есть доступ а затем готов каждый файл в отдельности в oop

...