В улье я создаю 2 внешние таблицы: одну для чтения из s3, а другую для записи в Dynamodb.
Но у меня проблемы с преобразованием array<string>
в array<struct<string, string>>
Есть ли кто-нибудь, кто может помочь или порекомендовать лучший способ сделать это?
Заранее спасибо.
Внешняя таблица из aws s3:
CREATE EXTERNAL TABLE tbl_s3(person array<string>)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://bucket/';
Данные S3 выглядят как
{
"person": [
"david|david@gmail.com",
"jane|jane@gmail.com"
]
}
Внешняя таблица для DynamodB
CREATE EXTERNAL TABLE spay5_ddb(person array<struct<name: string, email: string>>)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES (
'dynamodb.table.name' = 'ddb-table',
'dynamodb.column.mapping' = 'person:person',
'dynamodb.null.serialization' = 'true'
);
Dynamodb данные должны выглядеть так:
{
"person": [
{
"name": "david",
"email": "david@gmail.com"
},
{
"name": "jane",
"email": "jane@gmail.com"
}
]
}