本文针对的错误是(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语句有问题
再次运行发现运行成功
版权归原作者 floret* 所有, 如有侵权,请联系我们删除。