Я не могу установить механизм выполнения для куста в сценарии, выполняемом через 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, чтобы использовать механизм искры?