Я пытаюсь создать индекс для таблиц в Hive 0.9. Одна таблица имеет 1 миллиард строк, другая - 30 миллионов строк. Используемая мной команда (кроме создания таблицы и т. Д.)Создание индекса в улье 0.9
CREATE INDEX DEAL_IDX_1 ON TABLE DEAL (ID) AS
'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
WITH DEFERRED REBUILD;
alter index DEAL_IDX_1 ON DEAL rebuild;
set hive.optimize.autoindex=true;
set hive.optimize.index.filter=true;
Для 30 мельниц. строка таблицы, процесс восстановления выглядит Alright (картографа и редуктору оба закончили), пока в конце концов он не печатает
Invalid alter operation: Unable to alter index.
FAILED: Execution Error, return code 1
from org.apache.hadoop.hive.ql.exec.DDLTask
Проверка журнала, и это была ошибка
java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver"
Не знаю, почему эта ошибка встречаются, но в любом случае, я добавил дерби version.jar:
add jar /path/derby-version.jar
была решена сообщила об ошибке, но все-таки получил другую ошибку:
org.apache.hadoop.hive.ql.exec.FileSinkOperator:
StatsPublishing error: cannot connect to database
Не знаете, как решить проблему. Однако я вижу созданную индексную таблицу под кустом/хранилищем.
Для таблицы из 1 миллиарда строк это еще одна история. Картонер просто застрял на 2% или около того. И ошибка показала
FATAL org.apache.hadoop.mapred.Child: Error running child :
java.lang.OutOfMemoryError: Java heap space
Я пытался применять максимальный размер кучи, а также mapr памяти макс (см настройки упоминается где-то, но не в настройках конфигурации улья):
set mapred.child.java.opts = -Xmx6024m
set mapred.job.map.memory.mb=6000;
set mapred.job.reduce.memory.mb=4000;
Однако это не Помогите. Картограф все равно застрял бы на 2% с той же ошибкой.
Почему вам нужно создать индекс? – cybye
@cybye, это интересный вопрос. Не совсем понятно, как индекс поможет выполнить мои запросы. Я хотел бы сравнить и настроить производительность. В таблице было несколько столбцов, на которых будут выполняться несколько условий выбора. Также есть несколько операций объединения таблиц. – Causality
Возможно, вы можете получить производительность с помощью разбиения (metastore предоставленный индекс) и bucketing таблицы в первую очередь? Я не уверен, откуда взялись ошибки. Вероятно, проблема дерби, потому что у вас есть только локальный метастор. это могло бы помочь запустить сервер метасторе (запустить сервер, в улей куст метасторе локальный false и установить URL-адреса). – cybye