hadoop,sparksql学习过程中遇到的报错及解决方法

四五个月之前学习了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中的这个参数去掉即可解决

5.在本地跑程序时报这个错误

这个问题也是花了好多时间才解决,最后是在一个国外的网站上找到的解决方法,但这貌似是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依赖包加载失败

将已下载好的依赖删除后重新添加

7.启动spark报错

一般出现这种提示都是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


你可能感兴趣的:(Hadoop,Spark)