Как указать явную схему AWS Glue PySpark и использовать закладки - PullRequest
1 голос
/ 05 июня 2019

Чтение документации AWS Glue Python ETL Я не могу сказать, есть ли способ предоставить явную схему при использовании следующего класса DynamicFrameReder и чтении файлов json из s3:

create_dynamic_frame_from_options()

Дополнительно,Требуется ли для Bookmarking использовать класс DynamicFrameReader, указанный выше?

Причина, по которой я спрашиваю, состоит в том, что я всегда могу читать с использованием vanilla PySpark и таким образом передавать схему, но я не совсем уверен, что Bookmarkingбудет работать без использования функций клея.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

При использовании DynamicFrameReader вы можете указать schema в параметре dbtable, предоставленном в connection_options, например:

datasource0 = glueContext\
              .create_dynamic_frame\
              .from_options("redshift", 
                           {"url": "jdbc-url/database", 
                           "user": "username", 
                           "password": "password",
                           "dbtable": "schema.table-name", 
                            "redshiftTmpDir": "s3-tempdir-path"},
                            transformation_ctx = "datasource0")

Чтобы закладки работали, вам нужно использоватьМетоды склеивания AWS и определения transformation_ctx.После Документация вы найдете следующее:

Чтобы закладки работы работали правильно, включите параметр закладки работы и установите параметр transfor_ctx.Если вы не передадите параметр translation_ctx, закладки работы не будут включены для динамического фрейма или таблицы, используемой в методе.

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

0 голосов
/ 07 июня 2019

Неясно, с каким типом файла вы имеете дело. Если это CSV, клей должен иметь возможность выводить схему на основе заголовка, при условии, что вы указали правильные параметры формата.

https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html

Если вывод схемы не будет работать для вас, способ, который должен работать для любого набора данных, - это создать базу данных и таблицы каталога клея. Если сканер будет работать, это, вероятно, самый простой способ создать (и поддерживать) эту схему. Однако, если вы не можете использовать сканер, также можно вручную создавать таблицы и их схемы. Тогда вы можете использовать create_dynamic_frame_from_catalog, и при создании динамического фрейма будет использоваться схема из каталога данных.

Вы правы, полагая, что закладки не будут работать без использования функций склеивания.

...