Я использую Amazon Elastic MapReduce, и у меня есть таблица кустов, созданная на основе серии файлов журналов, хранящихся в Amazon S3 и разделенных по папкам по дням, например:
- Данные / день = 2011-09-01 / log_file.tsv
- Данные / день = 2011-09-02 / log_file.tsv
В настоящее время я пытаюсь создать дополнительную таблицу, которая отфильтровывает некоторые нежелательные действия в этих файлах журнала, но я не могу понять, как это сделать, и продолжаю получать ошибки, такие как:
FAILED: Error in semantic analysis: need to specify partition columns because the destination table is partitioned.
Если мой исходный оператор создания таблицы выглядит примерно так:
CREATE EXTERNAL TABLE IF NOT EXISTS table1 (
... fields ...
)
PARTITIONED BY ( DAY STRING )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://bucketname/data/';
Эта исходная таблица работает нормально, и я смог запросить ее без проблем.
Как тогда я должен создать новую таблицу, которая разделяет структуру предыдущей, но просто отфильтровывает данные? Это не похоже на работу.
CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE table1;
FROM table1
INSERT OVERWRITE TABLE table2
SELECT * WHERE
col1 = '%somecriteria%' AND
more criteria...
;
Как я уже говорил выше, это возвращает:
FAILED: Error in semantic analysis: need to specify partition columns because the destination table is partitioned.
Спасибо!