Как настроить механизм исполнения на запуск Cloudera Hive через JDBC - PullRequest
1 голос
/ 09 мая 2019

Я не могу установить механизм выполнения для куста в сценарии, выполняемом через jdbc. Когда тот же сценарий выполняется через веб-интерфейс hue, сценарий примет к сведению, что я пытаюсь настроить механизм выполнения на запуск, но не через jdbc

List<String> result = hiveTemplate.query(script);

Пример скрипта

set hive.execution.engine=spark;

SELECT * from ......

Я попытался выполнить реальный скрипт в classpath, я также попытался отправить строку, представляющую скрипт sql, через jdbc, как отмечено выше.

Я также попытался включить следующее в источник данных connectionProperties с фабричным классом, который создает hiveTemplate:

public static HiveTemplate createHiveTemplate(HiveExecutionEngine engine) {

    Properties props=new Properties();

    switch (engine) {
        case MAP_REDUCE:
            props.setProperty("hive.execution.engine", "mr");
            props.setProperty("mapreduce.map.memory.mb", "16000");
            props.setProperty("mapreduce.map.java.opts", "Xmx7200m");
            props.setProperty("mapreduce.reduce.memory.mb", "16000");
            props.setProperty("mapreduce.reduce.java.opts", "Xmx7200m");
            break;
        case SPARK:
            props.setProperty("hive.execution.engine", "spark");
            break;
        default:
            throw new NotImplementedException();
    }

    datasource.setConnectionProperties(props);
    return new HiveTemplate(() -> {
        return new HiveClient(datasource);
    });
}

Текущая ссылка показывает документацию для установки механизма исполнения: https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

set hive.execution.engine=spark;

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

Кто-нибудь успешно смог выполнить скрипт hiveql через jdbc, чтобы использовать механизм искры?

1 Ответ

1 голос
/ 09 мая 2019

Обновление по этому вопросу:

, кажется, работает, если вы добавите свойства конфигурации в URL-адрес драйвера

jdbc:hive2://<ip>:10000?hive.execution.engine=spark

Это все еще не идеальное состояние, а решение:

Если бы кто-нибудь сделал это с помощью конфигурации Java, я был бы рад услышать от вас

...