Установите значения отсутствующих столбцов по умолчанию с помощью AWS Glue Jobs - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь извлечь набор данных из динамодаба в s3, используя Glue.В процессе я хочу выбрать несколько столбцов, а затем установить значение по умолчанию для всех строк / столбцов, в которых отсутствуют значения.

В настоящее время я пытаюсь использовать функцию «Карта», но она неКажется, я не вызываю мой метод.

Вот что у меня есть:

def SetDefaults(rec):
    print("checking record")
    for col in rec:
        if not rec[col]:
            rec[col] = "missing"
    return rec

## Read raw(source) data from target DynamoDB 
raw_data_dyf = glueContext.create_dynamic_frame_from_options("dynamodb", {"dynamodb.input.tableName" : my_dynamodb_table, "dynamodb.throughput.read.percent" : "0.50" } )

## Get the necessary columns  
selected_data_dyf = ApplyMapping.apply(frame = raw_data_dyf, mappings = mappingList)

## get rid of null values
mapped_dyF = Map.apply(frame=selected_data_dyf, f=SetDefaults)

## write it all out as a csv
datasink = glueContext.write_dynamic_frame.from_options(frame=mapped_dyF , connection_type="s3", connection_options={ "path": my_train_data }, format="csv", format_options = {"writeHeader": False , "quoteChar": "-1" })

Мой ApplyMapping.apply вызов делает правильные вещи, где mappingList определяется группойиз:

mappingList.append(('gsaid', 'bigint', 'gsaid', 'bigint'))
mappingList.append(('objectid', 'bigint', 'objectid', 'bigint'))
mappingList.append(('objecttype', 'bigint', 'objecttype', 'bigint'))

У меня нет ошибок, все работает до завершения.Все мои данные находятся в s3, но все еще есть много пустых значений, а не «отсутствующей» записи, которую я хотел бы.

Оператор печати «проверяющая запись» никогда не печатается.Что мне здесь не хватает?

1 Ответ

0 голосов
/ 14 марта 2019

Альтернативное решение:

  1. Преобразование DynamicFrame в Spark DataFrame
  2. Использование метода fillna () для DataFrame для заполнения нулевых значений
  3. Преобразование DataFrame обратно в DynamicFrame
...