У меня ошибка «java.io.FileNotFoundException: нет такого файла или каталога» при попытке создать динамический фрейм с помощью ноутбука в AWS Glue - PullRequest
0 голосов
/ 09 июля 2019

Я устанавливаю новый ноутбук Jupyter в AWS Glue в качестве конечной точки разработчика, чтобы протестировать некоторый код для запуска сценария ETL.До сих пор я создавал базовый сценарий ETL с использованием AWS Glue, но по какой-то причине при попытке запустить код на ноутбуке Jupyter я продолжаю получать FileNotFoundException.

Я использую таблицу (в каталоге данных), которая была создана AWS Crawler для извлечения информации, связанной с корзиной S3, и я могу фактически получить имена файлов внутри корзины, но когдаЯ пытаюсь прочитать файл, используя динамический фрейм, выбрасывается FileNotFoundException.

У кого-нибудь когда-либо была эта проблема раньше?

Это работает на учетной записи N.Virginia AWS.Я уже настроил разрешения, предоставил роли IAM службе AWS Glue, настроил конечные точки VPC и попытался запустить задание непосредственно в AWS Glue, но безрезультатно.

Это основной код:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "xxx-database", table_name = "mytable_item", transformation_ctx = "datasource0")

datasource0.printSchema()
datasource0.show()

В качестве альтернативы:

datasource0 = glueContext.create_dynamic_frame.from_options('s3', connection_options={"paths":["s3://my-bucket/92387979/My-Table-Item/2016-09-11T16:30:00.000Z/"]}, format="json", transformation_ctx="")


datasource0.printSchema()
datasource0.show()

Я ожидал бы получить динамическое содержимое кадра, но на самом деле выдает эту ошибку:

An error occurred while calling o343.schema.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 8.0 failed 4 times, most recent failure: Lost task 0.3 in stage 8.0 (TID 23, ip-172-31-87-88.ec2.internal, executor 6): java.io.FileNotFoundException: No such file or directory 's3://my-bucket/92387979/My-Table-Item/2016-09-11T16:30:00.000Z/92387979-My-Table-Item-2016-09-11T16:30:00.000Z.json.gz'
    at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.getFileStatus(S3NativeFileSystem.java:826)
    at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.open(S3NativeFileSystem.java:1206)
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:773)
    at com.amazon.ws.emr.hadoop.fs.EmrFileSystem.open(EmrFileSystem.java:166)
    at com.amazonaws.services.glue.hadoop.TapeHadoopRecordReader.initialize(TapeHadoopRecordReader.scala:99)
    at org.apache.spark.rdd.NewHadoopRDD$$anon$1.liftedTree1$1(NewHadoopRDD.scala:182)
    at org.apache.spark.rdd.NewHadoopRDD$$anon$1.<init>(NewHadoopRDD.scala:179)
    at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:134)
    at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:69)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
    at org.apache.spark.rdd.UnionRDD.compute(UnionRDD.scala:105)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)

Заранее спасибо за любыепомощь оказана.

1 Ответ

0 голосов
/ 10 июля 2019

Ну, как отметили Крис Д'Энглер и Суровая Бафна , это действительно было разрешением.Оказывается, я забыл добавить определенные разрешения S3 для объектов (GetObject) внутри корзины, а не только для самого корзины.

Спасибо за помощь!

...