当前位置: 首页 > news >正文

dolphinscheduler中sqoop无法执行

由于sqoop兼容的hdfs版本和hive版本比较低,所以用sqoop想把postgres中数据导入到hive中,想了很多办法,都不行。
先是出错:

/tmp/dolphinscheduler/exec/process/admin/18331744396416/18363661030912_1/18/18/18_18.command: line 4: /opt/datasophon/dolphinscheduler-3.1.8/worker-server/conf/dolphinscheduler_env.sh: Permission denied

发现个问题,/opt/datasophon/dolphinscheduler-3.1.8/worker-server/conf/dolphinscheduler_env.sh这个脚本和目录,每次dolphinscheduler重启后,权限变成700了,只能手动去修改成755,包括目录也要改。这个问题只要重启就会存在,正在想办法。临时办法是搞个脚本定时去修改成755。

然后就是sqoop操作hive又有各种问题。
再就是dolphinscheduler中sqoop不支持postgres数据源,用mysql试了,也是各种出错,比如

后来用Datax也是很多问题,比如:

com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-05], Description:[往您配置的写入表中写入数据时失败.].  - java.sql.SQLFeatureNotSupportedException: Method not supportedat org.apache.hive.jdbc.HiveConnection.rollback(HiveConnection.java:1327)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.doBatchInsert(CommonRdbmsWriter.java:365)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWriteWithConnection(CommonRdbmsWriter.java:295)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWrite(CommonRdbmsWriter.java:323)at com.alibaba.datax.plugin.reader.rdbmswriter.RdbmsWriter$Task.startWrite(RdbmsWriter.java:86)at com.alibaba.datax.core.taskgroup.runner.WriterRunner.run(WriterRunner.java:56)at java.lang.Thread.run(Thread.java:750)- java.sql.SQLFeatureNotSupportedException: Method not supportedat org.apache.hive.jdbc.HiveConnection.rollback(HiveConnection.java:1327)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.doBatchInsert(CommonRdbmsWriter.java:365)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWriteWithConnection(CommonRdbmsWriter.java:295)at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWrite(CommonRdbmsWriter.java:323)at com.alibaba.datax.plugin.reader.rdbmswriter.RdbmsWriter$Task.startWrite(RdbmsWriter.java:86)at com.alibaba.datax.core.taskgroup.runner.WriterRunner.run(WriterRunner.java:56)at java.lang.Thread.run(Thread.java:750)

最后,我想,既然它们自带的hive和hdfs版本不兼容,我直接用客户端不就解决问题了吗,于是改用shell脚本:

/opt/sqoop/bin/sqoop import -D mapred.job.name=pg2hadoop -m 1 --connect "jdbc:postgresql://10.0.0.22:5432/postgres" --username user1 --password "123456" --null-non-string 'NULL' --null-string 'NULL' \
--query "SELECT username, display_name, user_sn, native_name, email, "password", valid_from, valid_to, status, mobile, user_type, sso_uid, gender, birth_date, id_number, id_type, src_sys, created_at, created_by, updated_at, updated_by FROM ri_base.ri_base_auth_user where \$CONDITIONS " \
--target-dir /dmp/tmp/riskctr/ri_base_auth_user/${bizDate} --delete-target-dir 

这就放到了临时目录,再用hive脚本在临时目录建个表:

drop table if exists testdb.tmp_riskctr_ri_base_auth_user;
CREATE external TABLE testdb.tmp_riskctr_ri_base_auth_user (username string COMMENT '登录账号',display_name string COMMENT '显示名',user_sn string COMMENT '用户系列号',native_name string COMMENT '本土名',email string COMMENT '邮箱',passwd string COMMENT '密码',valid_from date COMMENT '生效日期',valid_to date COMMENT '终效日期',status string  COMMENT '状态',mobile string COMMENT '移动电话',user_type string  COMMENT '用户类型',sso_uid string COMMENT 'SSO的用户ID',gender string COMMENT '性别',birth_date date COMMENT '生日',id_number string COMMENT '证件号码',id_type string COMMENT '证件类型',src_sys string  COMMENT '来源系统',created_at timestamp,created_by string,updated_at timestamp,updated_by string
)
COMMENT '员工表'
STORED AS textfile
location \"/dmp/tmp/riskctr/ri_base_auth_user/${bizDate}\";

最后把临时表数据加载到正式表里:

insert overwrite table testdb.ods_riskctr_ri_base_auth_user 
select username, display_name, user_sn, native_name, email, passwd as passwd, valid_from, 
valid_to, status, mobile, user_type, sso_uid, gender, birth_date, id_number, id_type, src_sys,  
created_at,	created_by,	updated_at, updated_by
from testdb.tmp_riskctr_ri_base_auth_user;
http://www.dtcms.com/a/290667.html

相关文章:

  • 机器人工程专业本科阶段的学习分析(腾讯元宝)
  • Real-World Blur Dataset for Learning and Benchmarking Deblurring Algorithms
  • 系统分析师-计算机系统-操作系统-存储器管理设备管理
  • Oracle From查看弹性域设置
  • (3)Oracle基本语法与常用函数
  • Oracle自治事务——从问题到实践的深度解析
  • 基于MySQL实现分布式调度系统的选举算法
  • CLIP与SIGLIP对比浅析
  • RuoYi配置多数据源失效
  • vscode 使用说明二
  • 前端图像视频实时检测
  • AJAX 概念与 axios 使用
  • AI探索 | 基于 Node.js 开发 MCP 客户端+服务端及优秀项目分享
  • 【华为机试】240. 搜索二维矩阵 II
  • Node.js- node管理工具nvm
  • Git上传与下载GitHub仓库
  • 新手向:基于Python的快捷启动器(本地应用/文件秒开工具)
  • 本地项目提交到git教程
  • 代码随想录算法训练营二十二天|回溯part04
  • 第十八节:第八部分:java高级:动态代理设计模式介绍、准备工作、代码实现
  • 【设计模式C#】简单工厂模式(用于简化获取对象实例化的复杂性)
  • Spring Boot注解详解
  • PDF 表单字段属性详解
  • 泛型:C#中的类型抽象艺术
  • 三款适合户外探险、应急救援的智能三防手机,各有各的优势
  • kafka 日志索引 AbstractIndex
  • Elasticsearch X-Pack安全功能未启用的解决方案
  • 模型系列(篇一)-Bert
  • 暑期算法训练.5
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示