我无法在通过jdbc执行的脚本中为蜂巢设置执行引擎。当通过hue web前端执行相同的脚本时,该脚本将注意到我正在尝试将执行引擎设置为spark,而不是通过jdbc
List<String> result = hiveTemplate.query(script);
脚本示例
set hive.execution.engine=spark;
SELECT * from ......
如上所述,我尝试在类路径中执行实际的脚本,也尝试通过jdbc发送表示sql脚本的字符串。
我还尝试将以下内容与创建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;
我希望脚本可以通过纱线中的火花引擎执行,而不使用正在发生的map reduce。我可以通过查看错误消息并通过Cloudera Manager查看作业历史来确认应用了错误的引擎
有人通过jdbc成功地执行了hiveql脚本以使用Spark引擎吗?
答案 0 :(得分:1)
此问题的最新消息:
如果将配置属性添加到驱动程序url中,它似乎可以工作
jdbc:hive2://<ip>:10000?hive.execution.engine=spark
这仍然不是理想状态,而是解决方案:
如果有人通过java config完成此操作,那么我很乐意听到您的声音