Firehose
Я пытаюсь вставить данные с помощью следующего скрипта:
Код: Выделить всё
json_data = json.dumps(
{
"ADF_Record": {
"foo": "bar",
"baz": "2024-09-04T18:56:15.114"
},
"ADF_Metadata": {
"OTF_Metadata": {
"DestinationDatabaseName": "my_db",
"DestinationTableName": "my_table",
"Operation": "INSERT"
}
}
}
)
response = boto3.client("firehose").put_record(
DeliveryStreamName="my_stream",
Record={"Data": json_data.encode()}
)
Клей
- Моя таблица типа Айсберг.
- Никакую дополнительную библиотеку SerDe я не определял или параметры SerDe.
- Схема таблицы:
: строкаКод: Выделить всё
foo
- : временная метка
Код: Выделить всё
baz
Ошибка< /strong>
Всякий раз, когда я пытаюсь вставить данные с помощью этого метода, данные не доставляются, и я получаю эту ошибку на стороне Firehose:
Код: Выделить всё
Firehose is unable to convert column data in your record to the column type specified within the schema. Table: my_db.my_table
- Данные записываются при удалении baz из полезной нагрузки (конвейер кажется работоспособным без метки времени).
- Переключение на формат эпохи () не помогает. Glue создает новую версию таблицы с baz в качестве даты, и записанные данные неразборчивы.
Код: Выделить всё
1725476175114000
- Переключение на TimestampType.WithZone приводит к той же ошибке.
- Использование библиотеки SerDe, такой как org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe и параметра timestamp.formats, не помогает. Glue создает новую версию таблицы и полностью удаляет параметры SerDe.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -using-aws