Как добавить банку в улей

Я уже некоторое время бьюсь головой о стену о том, как получить улей, эквивалентный столбцу IDENTITY MS SQL, добавленному в таблицу и автоматически увеличенному. Я нашел много ссылок на org.apache.hadoop.hive.contrib.udf.UDFRowSequence, но я понятия не имею, где это находится в моей установке HortonWorks 2.3 моего кластера. Я понятия не имею, с чего начать. Я видел файл Java здесь, который, как я предполагаю, мне нужно скомпилировать, но когда у меня есть .jar, куда он идет? Я пытался использовать банку SerDe для другой задачи, и мне никогда не удавалось заставить улей увидеть/использовать ее (см. мой вопрос на этом здесь). Я попытался следовать этому примеру по созданию пользовательской пользовательской функции здесь . Однако я не могу найти путь, который они описывают в моей установке Hortonworks (путь выглядит примерно как ql/src/java/org/apache/hadoop/hive/ql/udf/generic/).

Кажется, что каждый учебник/руководство/ссылка на создание UDF предполагает некоторые знания, которых у меня еще нет. Как я могу создать/использовать функциональность UDFrowSequence в установке Hortonworks для куста?


person wergeld    schedule 13.10.2015    source источник


Ответы (2)


Чтобы использовать UDF внутри Hive, скомпилируйте код Java и упакуйте файл класса байт-кода UDF в файл JAR. Затем откройте сеанс Hive, добавьте JAR в путь к классам.

hive> ADD JAR full path to jar file;

Путь здесь должен быть полным путем к вашей локальной файловой системе, куда вы должны поместить файл jar.

и используйте оператор CREATE FUNCTION для определения функции, которая использует класс Java:

hive> CREATE TEMPORARY FUNCTION functionname
> AS 'classname with full package name';

Затем вы можете использовать имя функции в сеансе куста.

Путь ql/src/java/org/apache/hadoop/hive/ql/udf/generic/ на самом деле относится к имени пакета класса java.

person madhu    schedule 13.10.2015
comment
При выполнении ADD JAR это постоянно? В более позднем сеансе куста я могу просто воссоздать свою ВРЕМЕННУЮ ФУНКЦИЮ снова или мне нужно снова ДОБАВИТЬ JAR? Если да, то как сделать этот JAR постоянной частью моего улья? - person wergeld; 13.10.2015
comment
Мы можем создать файл .hiverc в $HIVE_HOME/bin/ и/или добавить ДОБАВИТЬ полный путь JAR к файлу jar СОЗДАТЬ ВРЕМЕННУЮ ФУНКЦИЮ myfunction AS 'имя класса с полным именем пакета' Этот файл создается перед каждым вызовом оболочки Hive, что делает его идеальное место для добавления банок, добавления файлов и регистрации пользовательских функций. Тогда мы сможем постоянно использовать наши собственные UDF. - person madhu; 14.10.2015
comment
Где $HIVE_HOME? Это проблема, с которой я сталкиваюсь и в соответствии с моим связанным вопросом. Документов, в которых указано, где должен быть $HIVE_HOME, нет в моей системе. - person wergeld; 14.10.2015
comment
Ваш каталог установки улья в локальной файловой системе — это ваш $HIVE_HOME. - person madhu; 14.10.2015

Скопируйте файл jar внутри $HIVE_HOME/lib и перезапустите клиент куста.

cp full_path_to_jar_file $HIVE_HOME/lib/

person Kaustuv    schedule 26.12.2018