Nano Hash - криптовалюты, майнинг, программирование

Как мне скомпилировать Hive UDF

Я пытаюсь скомпилировать этот UDF:

package com.dataminelab.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.security.*;

/**
 * Calculate md5 of the string
*/
public final class Md5 extends UDF {

    public Text evaluate(final Text s) {
        if (s == null) {
            return null;
        }
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(s.toString().getBytes());
            byte[] md5hash = md.digest();
            StringBuilder builder = new StringBuilder();
            for (byte b : md5hash) {
            builder.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
            }
            return new Text(builder.toString());
            } catch (NoSuchAlgorithmException nsae) {
            System.out.println("Cannot find digest algorithm");
            System.exit(1);
        }
        return null;
    }
}

Пытаюсь скомпилировать с:

javac Md5.java

Но я получаю:

Md5.java:2: package org.apache.hadoop.hive.ql.exec does not exist
import org.apache.hadoop.hive.ql.exec.UDF;
                                     ^
Md5.java:3: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;

Я предполагаю, что они находятся где-то в файле jar, но я не уверен, где их устанавливает Hadoop, поэтому я не могу добавить их в свой путь к классам. Кто-нибудь знает местоположение по умолчанию или как узнать?


  • Я нашел один /usr/lib/hadoop-0.20/hadoop-core.jar методом догадок, который исправил некоторые ошибки компиляции, но все равно получил ошибку для org.apache.hadoop.hive.ql.exec.UDF 13.06.2012
  • ПОНЯЛ: /usr/lib/hive/lib/hive-exec-0.7.1-cdh3u3.jar 13.06.2012

Ответы:


1

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

export CLASSPATH=/usr/lib/hive/lib/hive-exec-0.9.0.15.jar:/usr/lib/hadoop/hadoop-core.jar
05.12.2012
  • В дистрибутиве HortonWorks мне пришлось использовать hadoop-common.jar вместо hadoop-core.jar 20.02.2019

  • 2

    Включили ли вы jar-файлы вида $HIVE_HOME/lib/hive-serde-*.jar и $HIVE_HOME/lib/hive-exec-*.jar в путь к классам?

    13.06.2012

    3

    добавить jar-файл hive-0.4.1 в lib

    13.02.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..