四五个月之前学习了hadoop,sparksql,在学习过程中遇到了许多问题,陆续地总结到了word文档中,现在把这些东西放到博客里,虽然都是些基础的问题,但是相信也能够帮助到和我一样刚刚入门的小伙伴们。
我的环境:CentOS 6.4 hadoop-2.6.0-cdh5.7.0 hive-1.1.0-cdh5.7.0 scala2.11.8 spark-2.1.0
1.maven依赖包下载慢
maven添加某些dependency时下载速度十分缓慢,这是由于下载地址在国外造成的。我们可以通过修改maven中的settings.xml文件,用阿里云的maven镜像替换掉原来的下载地址。具体操作如下:
删除掉文档中的中间部分,添加阿里云的镜像
nexus-aliyun
*
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
之后再添加dependency时速度那就是飞快了~
2.hadoop中datanode启动失败
这里感觉是第一次接触hadoop经常犯的错误,启动hdfs发现datanode没有成功启动。不论是datanode还是namenode
启动失败,都有可能是由于对hdfs进行了多次格式化,导致datanode和namenode中的namespaceID不匹配,解决方法就把它们改
成一样就好啦。
3.IDEA报错
Error:scalac: error while loading JUnit4, Scala signature
JUnit4 has wrong version
expected: 5.0
found: 4.1 in JUnit4.class
之所以选择IDEA而不是eclipse是由于spark内核是基于scala开发的,而eclipse对scala的支持不是很友好,于是就选择
了IDEA这个IDE,在java上也是十分好用的,学生可以申请免费的学生版。
这个错误是由于我是直接用的maven提供的模版,而没有注意Archetype中的版本问题。各版本一定要注意对应,解决方法是点击Add Archetype,
添加新的scala-archetype-simple,填写GAV,
groupID:net.alchim31.maven
ArtifactID:scala-archetype-simple
Version:1.6 问题解决
4.scala报错:
scala error:bad option ‘-make:transitive
scala版本问题,scala2.11不支持make参数,将pom.xml中的这个参数去掉即可解决
这个问题也是花了好多时间才解决,最后是在一个国外的网站上找到的解决方法,但这貌似是hadoop在windows上的一个bug?
从本地读取数据貌似跟hadoop没什么关系。解决方法如下:
(1)下载winutils.exe,链接http://social.msdn.microsoft.com/Forums/
windowsazure/en-US/28a57efb-082b-424b-8d9e-731b1fe135de/
please-read-if-experiencing-job-failures?forum=hdinsight
(2)把这个文件拷贝到d:\winutil\bin
(3)在程序中加入System.setProperty("hadoop.home.dir","d:\\winutil\\")
问题解决
6.maven依赖包加载失败
将已下载好的依赖删除后重新添加
一般出现这种提示都是jar包的问题,这里我们要将mysql的驱动拷贝到spark中的jar文件夹中,问题解决
8.hive报错,Specified key was too long;max key length is 767 bytes
这是由于元数据编码问题导致的,需要更改元数据库编码:alter database xxx character set latin1;
如果元数据中已经有了数据,不能删除。那么就更改对应表的编码:alter table PARTITIONS convert to character set latin1;
alter table PARTITION_KEYS convert to character set latin1;
如果元数据为空。那么就删除元数据库。再重新建立数据库,并更改编码,然后再让hive来建表。
9.报错9.Exception in thread "main" java.sql.SQLException:
Could not open client transport with JDBC Uri: jdbc:hive2://hadoop001:14000:java.net.ConnectException:
Connection refused
许多小伙伴会有的错误,在使用jdbc开发时,一定要先启动thriftserver
10.spark saveAsTextFile空指针错误:java.lang.NullPointerException
看这篇博客:
http://blog.csdn.net/kimyoungvon/article/details/51308651