AWS Glue преобразует структуру в динамический фрейм

Я немного новичок в AWSGlue. Я работаю над преобразованием сырого json-файла cloudwatch в csv с помощью AWSGlue. Сценарий преобразования довольно прост, однако документация и пример не кажутся исчерпывающими. Структура данных выглядит примерно так:

{
"Label": "RequestCount",
"Datapoints": [
    {
        "Timestamp": "2017-07-23T00:00:00Z",
        "Sum": 41960.0,
        "Unit": "Count"
    },
    {
        "Timestamp": "2017-07-30T00:00:00Z",
        "Sum": 46065.0,
        "Unit": "Count"
    },
    {
        "Timestamp": "2017-08-24T00:00:00Z",
        "Sum": 43915.0,
        "Unit": "Count"
    },

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


person ryo    schedule 13.12.2017    source источник


Ответы (1)


Я не думаю, что AWSGlue предоставляет для этого какой-либо метод сопоставления. После некоторой борьбы я обнаружил, что преобразование в pyspark было относительно легким. Вот псевдокод:

  • Получить источник данных из базы данных

    datasource0 = glueContext.create_dynamic_frame.from_catalog(database = ...)
    
  • Преобразуйте его в DF и превратите в искру

    mapped_df = datasource0.toDF().select(explode(col("Datapoints")).alias("collection")).select("collection.*")
    
  • Вернитесь к DynamicFrame и продолжите остальную часть процесса ETL.

    mapped_datasource0 = DynamicFrame.fromDF(mapped_df, glueContext, "mapped_datasource0");
    

Благодаря этой ссылке

person ryo    schedule 14.12.2017