как преобразовать массив <string>столбец в массив <struct>в улье - PullRequest
0 голосов
/ 26 февраля 2020

В улье я создаю 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"
    }
  ]
}
...