你好,游客 登录
背景:
阅读新闻

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

[日期:2018-08-20] 来源:csdn  作者: 楚天love [字体: ]

问题: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会出现找不到依赖的异常,虽然语法没问题;

参考解决方式:pom设置就能跑起来了(project structure依赖加不加似乎无所谓),但是第二天我删了project structure里面的jar依赖又还能跑;spark-shell没有此困扰;



问题(初始化):spark2.0要指定本地测试的工作路径.config("spark.sql.warehouse.dir","file:///work/4/test/spark-warehouse")否则:URISyntaxException: Relative path in absolute URI...

 

问题(虚拟机):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

收藏 推荐 打印 | 阅读:
相关新闻       spark2.3  spark1.6