AWS Glue: ETL для чтения файлов S3 CSV - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу использовать ETL для чтения данных из S3. Так как с заданиями ETL я могу настроить DPU для ускорения работы.

Но как мне это сделать? Я пытался

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

inputGDF = glueContext.create_dynamic_frame_from_options(connection_type = "s3", connection_options = {"paths": ["s3://pinfare-glue/testing-csv"]}, format = "csv")
outputGDF = glueContext.write_dynamic_frame.from_options(frame = inputGDF, connection_type = "s3", connection_options = {"path": "s3://pinfare-glue/testing-output"}, format = "parquet")

Но, похоже, там ничего не написано. Моя папка выглядит так:

enter image description here

Что неверно? Мой вывод S3 имеет только файл вроде: testing_output_$folder$

1 Ответ

0 голосов
/ 02 ноября 2018

Если вы читаете или записываете в сегменты S3, имя сегмента должно содержать aws-glue * префикс для клея для доступа к ведрам. Предполагая, что вы используете предварительно настроенный Роль IAM «AWSGlueServiceRole», внимательное изучение деталей политики, ответит, почему Клеевая работа ведет себя таким образом. Ниже приведена политика JSON политики AWSGlueServiceRole по умолчанию. я Я просто держу связанные части S3, чтобы сократить его для демонстрационных целей. Как вы можете Видите, методы корзины s3 Get / List имеют доступ ко всем ресурсам, но когда дело доходит до Получить / положить * объекты, ограничено префиксом «aws-glue- / »

Я написал блог о нескольких хитах AWS, которые могут помочь.

Не могли бы вы также вставить журнал, если есть сообщение об ошибке, и предложенное мной решение не сработало?

...