spark1.6转到spark2.3总结(依赖、版本、初始化问题)

问题:pom里面不写spark版本(<spark.version>2.0.0</spark.version>)的话,可能会默认用spark1.6导致版本冲突异常——语法通过但无法编译运行

问题(spark版本必须对应Scala版本):参考https://mvnrepository.com/artifact/org.apache.spark/spark-hive上面的spark和Scala混搭版本(不用理会hive版本)组合jar和pom写法如下图——

或者先看看自己的spark自带的jar依赖到底用啥Scala版本(spark1.6似乎没有这个目录):

若没对应上版本的话,会出现各种乱七八糟的异常,比如无法使用dataframe,报hive metastore初始化失败;

 

问题(依赖):idea的maven工程里,project structure -> modules -> dependencies 和 pom.xml依赖设置,如spark-core依赖只写project structure会出现找不到依赖的异常,虽然语法没问题;但是如果是下面这个包:

import org.apache.spark.mllib.linalg.distributed.RowMatrix

只写pom,不在project structure -> modules -> dependencies配置的话,语法都过不了,这个mllib比较奇葩(看起来是由于org.apache.spark前缀跟其他的包有歧义了,但hive等其他的包没有此问题)。

参考解决方式:一般pom设置就能跑起来了(对大部分jar包project structure依赖加不加似乎无所谓);spark-shell没有此困扰;

 

 

问题(初始化):spark2.0要指定本地测试的工作路径.config("spark.sql.warehouse.dir","file:///work/4/test/spark-warehouse")否则:URISyntaxException: Relative path in absolute URI......但spark2.4.0我win10下测试却无需指定,会自动生成。

 

 

 

问题(虚拟机):Ubuntu里面要先启动Hadoop服务(后启动spark),才能使用dataset、dataframe等,否则报拒绝连接等异常;

 

问题:spark2.3查询hbase0.96.1.1出现空指针异常(或者spark2.2这里卡住不动),这应该是spark2本身的bug:

NoSuchMethodError: org.apache.hadoop.mapreduce.InputSplit.getLocationInfo()...

点进到对应源码位置会发现spark2.+没有getLocationInfo函数,估计是spark从1升2的时候删掉了,但这里没改好。

解决方式:换到spark1.6就好了o(╯□╰)o

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值