Вопрос:

Разделы, не возвращающие никаких результатов в Amazon Athena

mysql csv amazon-s3 amazon-athena

855 просмотра

2 ответа

89 Репутация автора

Я создал таблицу в Амазонке Афины. У меня есть данные в виде файла CSV (один большой файл с данными за 2010-2015 годы). Он не разделен на s3. Я пытаюсь создать разделы в Афинах, но разделы не дают никаких результатов.

Шаг 1: создание таблицы в Афинах

CREATE EXTERNAL TABLE IF NOT EXISTS DATABASE.table1 (
NULL string,
OrderID string,
CustomerID string,
EmailAddress string
)
PARTITIONED BY (OrderDate STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
 'serialization.format' = ',',
  'quoteChar' = '"',
  'field.delim' = ','
) LOCATION 's3://XYZ/Orders/'
TBLPROPERTIES ('has_encrypted_data'='false');

После этого ШАГ 2. Загрузка разделов вручную (мой формат даты заказа - мм / дд / гг мин)

ALTER TABLE table1 ADD PARTITION (orderdate='01/01/2010 00:00') location 's3://xyz/Orders/'

Он говорит, что раздел был успешно создан, но когда я запрашиваю его, я не получаю никаких результатов. Так я создаю разделы неправильно? почему это не возвращает результаты? Любая помощь приветствуется.

После опробования комментариев ниже, я все еще не могу получить какие-либо результаты, когда я запрашиваю данные, используя дату заказа. Я снова загрузил свои файлы в Афину (два отдельных файла в течение двух лет), где путь к файлам выглядит следующим образом

s3://xyz/Orders/year/orders+2010.csv
 s3://xyz/Orders/year/orders+2014.csv

После этого я все еще не могу разделов и запросов данных, используя диапазон дат.

Автор: jsingh Источник Размещён: 08.11.2017 11:28

Ответы (2)


2 плюса

98607 Репутация автора

Решение

Разделы - это подкаталоги. При правильном определении Athena может пропускать подкаталоги, которые не содержат соответствующих данных.

Например, если таблица разделена по дате (ГГГГ-ММ-ДД), будет каталог с именем date=2017-11-08, содержащий только данные за этот день.

Учитывая, что все ваши данные содержатся в одном CSV, вы не можете использовать разделы. Если бы вам пришлось разделить файл на отдельные ежедневные файлы в соответствующей структуре каталогов, Athena работала бы быстрее для вас и была бы дешевле в эксплуатации.

Athena не может создать разделы для вас - вы должны предоставить Athena данные, которые уже разделены. Эта ADD PARTITIONи MSCK REPAIR TABLEкоманда просто сканировать и использовать существующие разделы.

См. Блог AWS Big Data: анализ данных в S3 с помощью Amazon Athena

Автор: John Rotenstein Размещён: 09.11.2017 02:48

0 плюса

1243 Репутация автора

Один интересный момент: папки в S3 на самом деле не являются папками , я склонен считать их тегами. По словам Джона, вам нужно нарезать данные и нарезать их кубиками, а затем пометить их так:

s3://mybucket/mydata/date_partition=2017-01-01/customer_partition=12345/somdedata.csv

Некоторые приложения, такие как веб-интерфейс и браузер S3, представляют «папки» S3 в качестве каталогов, но когда вы начнете выполнять вызовы API, вы обнаружите, что они не ведут себя так.

Одна из приятных особенностей этой структуры заключается в том, что Athena будет обрабатывать все файлы с определенным «тегом» (например, date_partition=2017-01-01/customer_partition=12345/) как находящиеся в одном разделе. Итак, для Афины это эквивалентно:

s3://mystuff/data/date_partition=2017-01-01/customer_partition=12345/somehugefile.csv
s3://mystuff/data/date_partition=2017-01-01/customer_partition=12345/asmallerfile.csv
s3://mystuff/data/date_partition=2017-01-01/customer_partition=12345/anothersmallerfile.csv

Иногда такое разделение данных может быть очень полезным.

Автор: Zerodf Размещён: 09.11.2017 02:17
Вопросы из категории :
32x32