0


在用DolphinScheduler把mysql中的数据导入到hive中的有关报错

本文针对的错误是(1)用shell设计sqoop脚本把数据从mysql导入到hive和(2)直接用sqoop把数据从mysql导入到hive

(1)首先需要建立二者的工作流

(2)运行发现1报错(node.sh:行1: sqoop: 未找到命令)

[INFO] 2024-09-25 06:57:45.289 +0000 - -> /tmp/dolphinscheduler/exec/process/zuhu/15073450612384/15073730411552_3/1/5/1_5_node.sh:行1: sqoop: 未找到命令
[INFO] 2024-09-25 06:57:45.291 +0000 - FINALIZE_SESSION

出现这种情况(1)是没有安装sqoop。(2)是没有在 DolphinScheduler中配置环境变量(3)可以试一下如果写全路径会不会报错

这里用的是(2),配置环境变量如下

export $SQOOP_HOME=/opt/installs/sqoop

export PATH=$SQOOP_HOME/bin:$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$SEATUNNEL_HOME/bin:$CHUNJUN_HOME/bin:$PATH

重启一下ds

/opt/installs/dolphinscheduler/bin/dolphinscheduler-daemon.sh  stop standalone-server
/opt/installs/dolphinscheduler/bin/dolphinscheduler-daemon.sh  start standalone-server
/opt/installs/dolphinscheduler/bin/dolphinscheduler-daemon.sh  status standalone-server

(2)没有合适的租户报错 there is not any tenant suitable,please choose a tenant available

点击运行发现报错如下

这是因为有时候租户会掉,在安全中心选择合适的租户

(3)租户没有权限报错 Permission denied

再次运行发现

2024-09-25 20:02:59,561 ERROR tool.ImportTool: Import failed: org.apache.hadoop.security.AccessControlException: Permission denied: user=zuhu, access=EXECUTE, inode="/tmp/hadoop-yarn":root:supergroup:drwx------

该错误为租户没有权限问题,因为我们linux中的用户名为root,所以租户只能为root,新创一个root租户即可解决上述问题

(4)报QueryResult找不到的错误

再次运行发现报QueryResult找不到的错误,遇到该错误我们可以拷贝QueryResult.jar到sqoop/lib下

进入报错界面上述显示的路径下

/tmp/sqoop-zuhu/compile/018de3378e07066bccdef9f7c94a8aad

把jar包拷贝到 sqoop 的 lib 下 【临时解决方案】

cp QueryResult.jar /opt/installs/sqoop/lib/

但是这种方法不是一劳永逸的,因为QueryResult.jar一直在变化,我们不能每一次运行都拷贝jar包

可以在/opt/installs/dolphinscheduler/bin/env/dolphinscheduler_env.sh中添加如下配置

export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop

即可彻底解决该错误,此时在shell中用sqoop脚本导数据已经不报错

该方法还可以规避两种错误

一种是在shell中用sqoop脚本导数据时出现No such file or directory错误

19:462024-09-25 19:27:52,662 INFO [main] impl.MetricsSystemImpl (MetricsSystemImpl.java:start(191)) - JobTracker metrics system started
2024-09-25 19:27:52,780 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(260)) - Cleaning up the staging area file:/tmp/hadoop/mapred/staging/zuhu126442185/.staging/job_local126442185_0001
2024-09-25 19:27:52,781 ERROR [main] tool.ImportTool (ImportTool.java:run(634)) - Import failed: ENOENT: No such file or directory
at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmodImpl(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmod(NativeIO.java:382)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:974)
at org.apache.hadoop.fs.ChecksumFileSystem$1.apply(ChecksumFileSystem.java:591)
at org.apache.hadoop.fs.ChecksumFileSystem$FsOperation.run(ChecksumFileSystem.java:572)
at org.apache.hadoop.fs.ChecksumFileSystem.setPermission(ChecksumFileSystem.java:594)
at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:752)
at org.apache.hadoop.mapreduce.JobResourceUploader.mkdirs(JobResourceUploader.java:660)
at org.apache.hadoop.mapreduce.JobResourceUploader.uploadResourcesInternal(JobResourceUploader.java:174)
at org.apache.hadoop.mapreduce.JobResourceUploader.uploadResources(JobResourceUploader.java:135)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:99)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:194)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1571)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1568)
at java.security.AccessController.doPrivileged(Native Method)

查找日志发现也是export HADOOP_CONF_DIR的问题

另一种是在2(用sqooop直接导入时)出现的数据类型不匹配的问题

(5)缺少hive临时目录问题 --target-dir

运行发现2报错

可以发现是临时目录的问题,添加临时目录

(6)sql语法错误 at line 1

接着报错推断可能是sql语句有问题

再次运行发现运行成功

标签: mysql hive 数据库

本文转载自: https://blog.csdn.net/m0_58419490/article/details/142526362
版权归原作者 floret* 所有, 如有侵权,请联系我们删除。

“在用DolphinScheduler把mysql中的数据导入到hive中的有关报错”的评论:

还没有评论