irpas技术客

利用sqoop将数据从hive导入mysql时报错_加油鸭小邱_使用sqoop将数据从hive导入mysql错误

未知 3335

······最近跟着厦门大学实验室在做大数据项目的一个案例,在利用sqoop将数据从hive导入mysql时报错,改了三天,参考了无数的案例,改到人崩溃,终于successfully!真的是我见过最好看的successfully了!记录下报的最多的一个错误,希望能帮助大家,给大家一个参考。

导入数据代码 cd /usr/local/hadoop/sqoop ./bin/sqoop export --connect jdbc:mysql://localhost:3306/dblab --username root --password hadoop --table user_action --export-dir '/user/hive/warehouse/dblab.db/user_action' --fields-terminated-by '\t'; #导入命令

./bin/sqoop export ##表示数据从 hive 复制到 mysql 中 –connect jdbc:mysql://localhost:3306/dblab –username root #mysql登陆用户名 –password hadoop #登录密码 –table user_action #mysql 中的表,即将被导入的表名称 –export-dir '/user/hive/warehouse/dblab.db/user_action ’ #hive 中被导出的文件 –fields-terminated-by ‘\t’ #Hive 中被导出的文件字段的分隔符

报错

这段代码重复出现

INFO mapreduce.Job: Job job_1649814898218_0011 running in uber mode : false 22/04/13 16:43:52 INFO mapreduce.Job: map 0% reduce 0% 22/04/13 16:43:53 INFO mapreduce.Job: Task Id : attempt_1649814898218_0011_m_000001_0, Status : FAILED Container launch failed for container_1649814898218_0011_01_000003 : org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:168) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106) at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:155) at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:375) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

然后是这样

22/04/13 16:44:05 INFO mapreduce.Job: map 100% reduce 0% 22/04/13 16:44:08 INFO mapreduce.Job: Job job_1649814898218_0011 failed with state FAILED due to: Task failed task_1649814898218_0011_m_000001 Job failed as tasks failed. failedMaps:1 failedReduces:0 22/04/13 16:44:08 INFO mapreduce.Job: Counters: 4 Job Counters Other local map tasks=9 Data-local map tasks=4 Total time spent by all maps in occupied slots (ms)=0 Total time spent by all reduces in occupied slots (ms)=0 22/04/13 16:44:08 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead 22/04/13 16:44:08 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 37.6147 seconds (0 bytes/sec) 22/04/13 16:44:08 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead 22/04/13 16:44:08 INFO mapreduce.ExportJobBase: Exported 0 records. 22/04/13 16:44:08 ERROR tool.ExportTool: Error during export: Export job failed!

查了一下,有人说这是个经典的哈姆雷特错误,因为每个人都有不同的解决方案。我最开始怀疑是mysql编码问题,因为我在设置的时候没有设置好,但是放了一晚上之后,按照教程,他居然又好了!神奇。

1、进入编辑my.cnf

sudo vim /etc/my.cnf

2、在[mysqld]下面添加

character-set-server=utf8 init_connect='SET NAMES utf8'

3、在[mysqld]上面添加

[mysql] default-character-set=utf8

4、重启MySQL

systemctl restart mysqld

好啦,现在mysql改好了,但是还是报错。于是我又开始各种搜资料,各种改,折腾一番没有进展,最后我把目光放在了数据格式上。根据提供的数据,在hive中查询的结果是这样的,很奇怪,第三类如果长度小于8,就会发生第四列之后前进的情况,如行2、3。 因为拖了好几天实在是没有进展,有点焦虑,想不到其他的办法,于是我就想能不能把这些奇怪的数据行删掉,只留下格式正确的行。

说干就干,于是我找出了原始数据,在Excel中打开,利用if函数,筛选出第三列的数据长度小于8的行,然后删掉。具体函数为if(len(**)>7,1,0),这样就能把小于8的行和其他用0,1区分开,再升序排序一下,把=0的行删掉就可以了。

将处理好的数据重新上传,再重新上传,查看,果然就很舒服了。 最后运行sqoop导入命令,终于看到了想看的!!! 在解决问题的过程中,还修改了yarn-site.xml文件

cd /usr/local/hadoop/hadoop-2.7.1/etc/hadoop sudo vim yarn-site.xml <configuration> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>20480</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>

三天时间,也想放弃,也怀疑自己,终于解决了这个bug嘿嘿!谢谢网络上的各位大佬,给了各种解决方案,现在我把自己的解决方案写出来,也希望能帮助更多同学和朋友。 今天看到了一篇文章“计算机女孩”,这是1967年的Cosmopolitan文章,讲述了一个由女性主导的奇怪新领域,它被成为编程。男孩子能做到的我们女孩子也可以,这可是女性曾经最先主导的领域,小邱加油呀! 各位晚安!

另外附一下厦门大学实验室做大数据的网站,想要做大数据案例的朋友们可以参考一下,很不错! http://dblab.xmu.edu.cn/post/7499/


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #导入数据代码cd #export #connect #username