2014-01-15 4 views
1

У меня есть огромное количество JSon файлов,> размер 100TB в общей сложности, каждый из JSON файл сжатого bzip'ый 10GB, и каждая строка содержат объект JSON, и они хранятся на s3Анализируя огромное количество JSON файлов на S3

  1. Если я хочу преобразовать json в csv (также сохраненный на s3), поэтому я могу импортировать их в redshift напрямую, пишет собственный код, используя hasoop единственный выбор?

  2. Можно ли сделать adhoc-запрос в json-файле без преобразования данных в другой формат (так как я не хочу сначала преобразовывать их в другой формат каждый раз, когда мне нужно делать запрос по мере того, как источник растет)

ответ

3

Самый быстрый и простой способ - запустить кластер EMR, загруженный с помощью Hive, чтобы сделать тяжелый подъем для этого. Используя JsonSerde, вы можете легко преобразовать данные в формат csv. Это потребовало бы, чтобы вы вставляли данные в таблицу форматированных CSV из таблицы форматирования JSON.

Хороший учебник для обработки JsonSerde можно найти здесь:

http://aws.amazon.com/articles/2855

Также хорошая библиотека, используемая для формата CSV является:

https://github.com/ogrodnek/csv-serde

Кластер ЭМИ может быть коротким -жил и нужен только для одной работы, которая также может охватывать случаи низкой стоимости пятна.

Как только у вас есть формат CSV, документация Redshift COPY должна быть достаточной.

http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

+0

Спасибо, но так как мой JSON является bziped, поэтому полагаю, мне нужно, чтобы извлечь его, прежде чем я могу использовать JsonSerde? – Ryan

+0

Улей не должен иметь никаких проблем, автоматически вычисляя сжатие и работая с ним. https://cwiki.apache.org/confluence/display/Hive/CompressedStorage – Bryan

Смежные вопросы