Установите значения отсутствующих столбцов по умолчанию с помощью AWS Glue Jobs
Я пытаюсь извлечь набор данных из DynamodB в S3 с помощью клея. В процессе я хочу выбрать несколько столбцов, а затем установить значение по умолчанию для всех строк или столбцов, которые имеют пропущенные значения.
В настоящее время я пытаюсь использовать функцию "Карта", но, похоже, она не вызывает мой метод.
Вот что у меня есть:
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, но все еще есть много пустых значений, а не "пропущенная" запись, которую я хотел бы.
Оператор печати "проверяющая запись" никогда не печатается.
Что мне здесь не хватает?
0 ответов
Альтернативное решение:
- Конвертировать DynamicFrame в Spark DataFrame
- Используйте метод fillna () объекта DataFrame, чтобы заполнить нулевые значения
- Преобразовать DataFrame обратно в DynamicFrame