Чтение заголовков из источника данных в задании на клей AWS - PullRequest
0 голосов
/ 30 мая 2018

У меня есть задание AWS Glue, которое читает из источника данных примерно так:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "dev-data", table_name = "contacts", transformation_ctx = "datasource0")

Но когда я вызываю .toDF () для динамического фрейма, заголовками являются 'col0', 'col1', 'col2' и т. д., и мои фактические заголовки находятся в первой строке фрейма данных.

Примечание. Я не могу установить их вручную, поскольку столбцы в источнике данных являются переменными и перебирают столбцы вЦикл для их установки приводит к ошибке, потому что вам придется устанавливать одну и ту же переменную dataframe несколько раз, что клей не может обработать.

Как я могу перехватить заголовки при чтении из источника данных?

Ответы [ 3 ]

0 голосов
/ 14 мая 2019

Вы можете попробовать с заголовком , параметр.например,

dyF = glueContext.create_dynamic_frame.from_options(
    's3',
    {'paths': ['s3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv']},
    'csv',
    {'withHeader': True})

Документацию для этого можно найти здесь

0 голосов
/ 22 августа 2019

Я знаю, что этот пост старый, но я столкнулся с подобной проблемой и потратил слишком много времени, чтобы выяснить, в чем проблема.Хотел поделиться своим решением на случай, если оно поможет другим!

Я использовал графический интерфейс на AWS и забыл добавить корректный классификатор в сканер перед его запуском.Это привело к тому, что AWS Glue неправильно определял типы данных (в основном они представляли собой строки), а имена столбцов не обнаруживались (они назывались col1, col2 и т. Д.).Вы можете создать классификатор в "классификаторах" в разделе "сканеры".Затем при настройке сканера добавьте свой классификатор в раздел «выбранные классификаторы» внизу.

Документация: https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html

0 голосов
/ 26 июня 2018

Оказывается, это ошибка в сканере клея, они еще не поддерживают заголовки.Обходной путь, который я использовал, состоял в том, чтобы в любом случае выполнить обход контента, а затем, когда сканер завершает работу, у меня есть лямбда, которая запускает событие наблюдения за облаком завершения сканирования, и лямбда запускает склеивающее задание, которое просто считывает непосредственно из s3,Когда клей закреплен для поддержки чтения в заголовках, я могу отключить способ чтения в заголовках.

...