在使用Apache 调度执行复杂的HiveSQL时,HQL包含多种DolphinScheduler无法正确识别的符号,怎么办?本文提供了可行的思路和方法,供用户参考。
在Hive中完成复杂JSON,既有对象还有数组而且数组中包含数组的解析后,原本以为没啥问题了,结果在DolphinScheduler中调度又出现了大问题,搞了一天。试了很多种方法,死了无数脑细胞,才解决了这个问题!
DolphinScheduler原来的任务调度方式是在shell脚本里添加HiveSQL语句:
DolphinScheduler无法正确识别HiveSQL里解析复杂JSON的多种符号。
把HiveSQL放在一个SQL文件里,然后在脚本里是执行Hive的sourceSQL文件。1 SQL文件
- 使用hurys_dc_ods数据库
use hurys_dc_dwd; - hive调优(必须先执行调优语句,否则部分复杂SQL运行会有问题)
set hive.vectorized.execution.enabled=false; - 开启动态分区功能(默认 true,开启)
set hive.exec.dynamic.partition=true; - 设置为非严格模式 nonstrict 模式表示允许所有的分区字段都可以使用动态分区
set hive.exec.dynamic.partition.mode=nonstrict; - 在每个执行 MR 的节点上,最大可以创建多少个动态分区
set hive.exec.max.dynamic.partitions.pernode=1000; - 在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。默认 1000
set hive.exec.max.dynamic.partitions=1500;
2 海豚任务执行脚本
3 执行任务,验证结果
终于解决了!以后碰到类似调度器识别不了SQL里符号的问题,可以用这个方法,把SQL放在SQL文件里,然后在脚本里执行这个SQL文件,这样就能规避这类问题了。原文链接:https://blog.csdn.net/tiantang2renjian/article/details/140605840