sqoop java.lang.Exception: java.lang.ClassNotFoundException: Class xxx(表名) not found
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
还没有评论,来说两句吧...