当前位置: 首页 > 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.lryc.cn/news/594799.html

相关文章:

  • 三款适合户外探险、应急救援的智能三防手机,各有各的优势
  • SQLite以及Room框架的学习:用SQLite给新闻app加上更完善的登录注册功能
  • 深入浅出:从最小核心到完整架构,全面解析5G用户面协议栈
  • Mac上安装Claude Code的步骤
  • RANsemi 推出适用于 Split 7.2 Open RAN 无线电单元的即插即用基带板
  • Q10900H6迷你电脑:集成双10G+四2.5G网口,支持多系统网络部署
  • RNS805 是针对 O-RAN 联盟兼容 Cat A O-RU 优化的 SoC,符合 3GPP 5G/4G 标准。
  • 【Android】交叉编译faiss库 | 问题解决
  • 区块链之以太坊合约开发工具——Metamask钱包和Remix IDE
  • 部署Zabbix企业级分布式监控
  • 【Elasticsearch】settings
  • Webpack源代码泄露漏洞
  • 深圳南柯电子|发电机控制器EMC整改:从合规到高可靠的进化之路
  • Linux中ELF区域与文件偏移量的关系
  • 开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机
  • 一个适合MCU的分级菜单框架
  • 格式工厂5.21.0简介
  • 设计模式六:工厂模式(Factory Pattern)
  • 从安装到上手:Ubuntu 22.04 玩转 Containerd 2.1.3 容器运行时
  • 在 Windows上用WSL和VSCode进行Linux开发环境配置
  • 《使用 IDEA 部署 Docker 应用指南》
  • 在Anolis8.6上源码编译安装部署OpenVAS(GVM)未完待续
  • git bash命令不够完善,想整合msys2该怎么办?
  • Dynamics 365 Contact Center是什么
  • Java 解析前端上传 ZIP 压缩包内 Excel 文件的完整实现方案
  • 前端开发者快速理解Spring Boot项目指南
  • 在 Angular 应用程序中使用 Genkit 的完整指南
  • docker 容器学习
  • Three.js 全景图(Equirectangular Texture)教程:从加载到球面映射
  • AR技术:应急响应的加速利器