添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

sqoop把mysql数据导入到hdfs 执行报错
sqoop 执行如下

./sqoop import \
--connect jdbc:mysql://10.xx.120.xxx:3306/fl \
--username root \
--password 606122 \
--table bond_code \
--target-dir /sqoop \
--delete-target-dir \
--fields-terminated-by '\t'

报错信息如下:
在这里插入图片描述

报错原因:
class未找到是因为map是本地方式运行,生成的jar包在/tmp/sqoop-[username]目录下有两种解决方式

解决办法:

修改mapred运行方式,修改为伪分布方式

# 1.etc/hadoop/mapred-site.xml:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.admin.user.env</name>
        <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
    </property>
</configuration>
# 2. etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
# 3. Start ResourceManager daemon and NodeManager daemon:
  $ sbin/start-yarn.sh

方式二
在任务命令中增加–bindir参数

./sqoop import \
--connect jdbc:mysql://1x.1xx.1x.20x:3306/fl \
--username **** \
--password **** \
--table bond_code \
--target-dir /sqoop \
--delete-target-dir \
--fields-terminated-by '\t' \
--bindir /usr/local/work/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0/lib
                    sqoop 执行如下./sqoop import \--connect jdbc:mysql://10.188.120.201:3306/fl \--username root \--password fl606123 \--table bond_code \--target-dir /sqoop \--delete-target-dir \--fields-terminated-by '\t'报错信息如下:报错原因:class未找到是因为map是本地方式运行,生成的jar包在/t
				
1、出现下面报错信息: Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.spi.LoggerContextFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at su
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.spi.LoggerContextFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.... NoClassDefFoundError: org/apache/hadoop/mapreduce/InputFormat 21/01/27 08:25:49 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/002e434d1bd3a0780e4d1748ed2511bd/QueryResult.jar Exception in thread "main" java.lang.
sqoop 从mysql导入hdfs报 java.lang.ClassNotFoundException: Class device_action_record not found
### 回答1: 这个错误是由于Sqoop无法加载MySQL数据库驱动程序类com.mysql.jdbc.Driver导致的。可能是因为驱动程序JAR文件未正确配置或未在Sqoop的类路径中找到。您可以尝试检查以下内容: 1. 检查MySQL驱动程序JAR文件是否已正确配置到Sqoop的类路径中。 2. 确保MySQL驱动程序JAR文件已正确安装在Sqoop所在的机器上。 3. 检查MySQL驱动程序版本是否与Sqoop版本兼容。 4. 如果您使用的是CDH(Cloudera Distribution Hadoop),则可以尝试使用CDH提供的Sqoop版本和MySQL驱动程序版本。 希望这些提示可以帮助您解决问题。 ### 回答2: 该错误通常表示Sqoop无法加载MySQL JDBC驱动程序类com.mysql.jdbc.Driver。Sqoop需要这个驱动程序才能连接MySQL数据库,如果该类未找到,则Sqoop无法执行任何与MySQL相关的任务。 要解决此错误,有几个步骤可以尝试: 1. 检查MySQL JDBC驱动程序是否存在。请确保已将mysql-connector-java.jar文件放置在Sqoop类路径中。如果未在类路径中,则需要将其添加到类路径中。 2. 检查MySQL JDBC驱动程序的版本。Sqoop需要MySQL JDBC驱动程序的特定版本才能正常工作。请确保正在使用与Sqoop兼容的版本。 3. 检查sqoop-env.sh文件。如果使用的是Sqoop2,则需要在sqoop-env.sh文件中设置正确的数据库驱动程序,以便Sqoop2可以正确加载它。 4. 检查MySQL数据库是否在运行。如果MySQL数据库未运行,则无法使用Sqoop与其进行交互。 总之,如果遇到了这个错误,请先检查以上步骤,并确保所有设置都正确。这将确保Sqoop可以正确连接到MySQL数据库并执行所需的任务。 ### 回答3: 这个错误提示意味着在Sqoop运行时无法加载MySQL数据库的驱动程序。在Sqoop里,需要一个有效的数据库驱动程序来访问和操作数据库。这个错误通常出现在以下几种情况下: 1. 未正确安装MySQL JDBC驱动程序。 Sqoop需要用到MySQL数据库的JDBC驱动程序。如果没有正确地安装MySQL JDBC驱动程序,就会导致这个错误出现。解决此问题的方法是下载并正确安装MySQL JDBC驱动程序。 2. 没有将MySQL JDBC驱动程序添加到Sqoopclasspath中。 如果在Sqoopclasspath中没有将MySQL JDBC驱动程序添加到其中,就无法加载MySQL驱动程序。为了解决这个问题,需要将MySQL JDBC驱动程序添加到Sqoopclasspath中。可以使用export命令设置CLASSPATH变量来将JAR文件所在的目录添加到classpath中,或者在Sqoop命令中使用--driver选项指定MySQL驱动程序路径。 3. MySQL JDBC驱动程序版本不兼容。 如果MySQL JDBC驱动程序的版本不兼容,就会导致无法加载MySQL驱动程序。为了解决这个问题,需要确定MySQL驱动程序的版本是否与Sqoop兼容,并确保使用了兼容的驱动程序版本。 总之,这个错误提示表明出现了无法加载MySQL JDBC驱动程序的问题。要解决这个问题,需要确定MySQL JDBC驱动程序是否正确安装和添加到了Sqoopclasspath中,并确定驱动程序的版本是否与Sqoop兼容。只有这样,才能成功加载MySQL JDBC驱动程序并使用Sqoop访问和操作MySQL数据库。