Hive UDTF не принимает вывод более двух столбцов

Улей UDTF, который я закодировал, работает нормально, поскольку количество указанных выходных столбцов равно двум. Но в тот момент, когда я меняю его на три и повторно развертываю, появляется следующее сообщение об ошибке.

FAILED: SemanticException [Ошибка 10083]: количество псевдонимов, предоставленных в предложении AS, не соответствует количеству столбцов, выводимых UDTF, ожидалось 2 псевдонима, но было получено 3

Есть ли для этого причина?

Вот блок кода, который я использую в методе инициализации.

List<String> fieldNames = new ArrayList<String>(3);
List<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>(3);
fieldNames.add("word");
fieldNames.add("cnt");
fieldNames.add("ext");

fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
fieldOIs.add(PrimitiveObjectInspectorFactory.javaIntObjectInspector);
fieldOIs.add(PrimitiveObjectInspectorFactory.javaIntObjectInspector);

return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames, fieldOIs);

Вот инструкция вперед в методе процесса

forward(new Object[] { "abcdef", Integer.valueOf(123), Integer.valueOf(123)});

Любая помощь приветствуется.


person Rangesh Ananthalwar    schedule 20.07.2015    source источник


Ответы (1)


Решение состоит в том, чтобы закрыть текущий сеанс CLI куста, открыть другой сеанс куста и развернуть банку, чтобы новые изменения в initialize() вступили в силу.

Чтобы изменения вступили в силу,

метод initialize() --> перезапустить новый сеанс CLI куста и повторно развернуть банку

метод process() --> повторное развертывание jar в рамках одного сеанса работает!

Похоже, что метод initialize() загружается для каждого сеанса только во время первого развертывания jar, тогда как метод process() перезагружается каждый раз, когда jar повторно развертывается в том же сеансе.

Поскольку информация о количестве столбцов присутствует в методе initialize(), он не работал при любом количестве повторных развертываний в рамках одного сеанса. Это сработало, когда я закрыл сеансы и начал новый перед развертыванием файла jar.

person Rangesh Ananthalwar    schedule 20.07.2015