2016-08-11 3 views
1

У меня есть таблица DynamoDB с некоторыми атрибутами, которые являются Document Types: list и map, а конкретно.Экспорт типов документов DynamoDB в Redshift

Я пытаюсь экспортировать эти таблицы в Redshift. According to the documentation, команда Redshift copy потерпит неудачу, если вы пытаетесь скопировать данные из таблицы DynamoDB, которая включает в себя либо list или map атрибуты:

только атрибуты Amazon DynamoDB с скалярных типа STRING и ЧИСЛО данных поддерживаются. Типы данных Amazon DynamoDB BINARY и SET не поддерживаются. Если команда COPY пытается загрузить атрибут с неподдерживаемым типом данных, команда завершится с ошибкой.

Я также исследовали с помощью трубопровода данных и улей, но the documentation предполагает, что улей не поддерживает list или map либо.

Каковы варианты перемещения данных из DynamoDB - в том числе list и map атрибутов - и в Redshift?

ответ

0

Подход, который я взял, это начать с шаблона Export DynamoDB Table to S3.

org.apache.hadoop.dynamodb.tools.DynamoDbExport шаг, который проходит в EMRActivity, кажется, вывести файл манифеста специально предназначен для использования с RedshiftCopyActivity: http://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html

Таким образом, в дополнение к узлу S3BackupLocation данных, который поставляется с «Экспорт DynamoDB таблицы в S3» шаблон, я добавил еще S3DataNode, который dependsOn деятельности EMR. Он задает manifestFilePath, который совпадает с directoryPath, указанным в узле данных S3BackupLocation, за исключением того, что в конец добавлено /manifest.

Этот новый узел данных - с manifestFilePath - затем используется как вход для RedshiftCopyActivity. Для того, чтобы сгладить атрибуты, которые являются карты, то RedshiftCopyActivity определяет некоторые commandOptions, который обеспечивает JSONPath options:

"commandOptions": "JSON 's3://richard.jp.leguen/data-pipeline/misc/jsonpaths.txt'" 
Смежные вопросы