怎么办?用DolphinScheduler调度执行复杂的HiveSQL时无法正确识别符号

在使用Apache DolphinScheduler调度执行复杂的HiveSQL时,HQL包含多种海豚无法正确识别的符号,怎么办?本文提供了可行的思路和方法,供用户参考。

一、目的

在Hive中完成复杂JSON,既有对象还有数组而且数组中包含数组的解析后,原本以为没啥问题了,结果在DolphinScheduler中调度又出现了大问题,搞了一天。试了很多种方法,死了无数脑细胞,才解决了这个问题!

二、HiveSQL

insert  overwrite  table  hurys_dc_dwd.dwd_json_statistics partition(day)
select
        t1.device_no,
        source_device_type,
        sn,
        model,
        create_time,
        cycle,
        get_json_object(coil_list,'$.laneNo')  lane_no,
        get_json_object(coil_list,'$.laneType')           lane_type,
        section_no,
        get_json_object(coil_list,'$.coilNo')             coil_no,
        get_json_object(coil_list,'$.volumeSum')          volume_sum,
        get_json_object(coil_list,'$.volumePerson')       volume_person,
        get_json_object(coil_list,'$.volumeCarNon')       volume_car_non,
        get_json_object(coil_list,'$.volumeCarSmall')     volume_car_small,
        get_json_object(coil_list,'$.volumeCarMiddle')    volume_car_middle,
        get_json_object(coil_list,'$.volumeCarBig')       volume_car_big,
        get_json_object(coil_list,'$.speedAvg')           speed_avg,
        get_json_object(coil_list,'$.speed85')            speed_85,
        get_json_object(coil_list,'$.timeOccupancy')      time_occupancy,
        get_json_object(coil_list,'$.averageHeadway')     average_headway,
        get_json_object(coil_list,'$.averageGap')         average_gap,
        substr(create_time,1,10) day
from (select
       get_json_object(statistics_json,'$.deviceNo')          device_no,
       get_json_object(statistics_json,'$.sourceDeviceType')  source_device_type,
       get_json_object(statistics_json,'$.sn')                sn,
       get_json_object(statistics_json,'$.model')             model,
       get_json_object(statistics_json,'$.createTime')        create_time ,
       get_j
### 如何在 DolphinScheduler调度执行包含 SQL 的 Shell 脚本 #### 创建并配置 Shell 脚本 为了能够在 DolphinScheduler 中成功运行包含 SQL 语句的 Shell 脚本,需先准备该脚本文件。假设有一个名为 `run_sql.sh` 的 Shell 文件用于调用 Hive 或 Impala SQL 文件。 ```bash #!/bin/bash # 设置环境变量 export HIVE_HOME=/path/to/hive export PATH=$PATH:$HIVE_HOME/bin # 定义参数 dayid=${1:-$(date +%Y-%m-%d)} endid=${2:-default_value} # 执行SQL文件 hive -hivevar dayid="$dayid" -hivevar endid="$endid" -f /path/to/sql/testvar.sql ``` 此脚本设置了必要的环境变量,并定义了两个可选参数 `dayid` 和 `endid` 来传递给 SQL 文件中的查询条件[^5]。 #### 配置 DolphinScheduler 工作流项目 进入 DolphinScheduler Web UI 后,在工作流设计页面添加一个新的 Shell 类型的任务节点。对于这个任务: - **名称**: 可以为 "Run_Hive_SQL" - **命令类型**: 使用绝对路径指定要执行的 `.sh` 文件位置以及任何所需的参数。 例如,设置命令为 `/data/dolphinscheduler/shell/run_sql.sh $(date +%Y-%m-%d) 26` 将会自动填充今天的日期作为第一个参数,并固定第二个参数值为 `26`[^4]。 #### 处理权限问题 为了避免遇到诸如 “Permission denied” 这样的错误消息,确保所有参与计算集群内的节点上已经正确设置了相应的目录和文件权限。具体来说就是让 `dolphinscheduler` 用户拥有足够的访问权利去读取目标 SQL 文件及其所在目录的内容[^3]。 #### 测试与验证 完成上述配置之后保存并提交整个流程定义,接着启动一次测试实例来确认一切正常运作。检查日志输出以获取更多关于实际执行情况的信息;如果没有看到预期的日志条目,则可能是由于权限不足或其他原因导致任务未能真正开始执行
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值