项目环境
Java8,Maven3.1,Scala2.11,Spark2.3
项目介绍
本项目致力于通过统计信息分析多个文件的差异,它支持指定一列或者多列比较统计信息,最终产生分析报表和差异数据。主要用于检查公司内部hadoop sql转移到spark中由于数据和sql本身的问题和转移翻译过程中产生的job阶段产物差错检测。
项目踩坑
下面是真从0到1的过程,因为在写这个项目前,我完全没有任何spark和scala的经验,以下经验供小白入门者的问题参考。
1.Scala隐式转换问题
当我使用filter($"param" === 0)报错,“Value '$' is not a member of StringContext”,这里是缺少隐式转换的引包(import self.sparkSession.implicits._)后面去了解了一下Scala中关于隐式转换的内容,到现在也不算太懂,但是大概知道什么时候需要隐式转换了。
2.Scala、Spark版本不一致问题
在idea中直接run或者debug能启动spark job,但是mvn clean package后通过spark-submit无法正常运行,可能的原因是pom.xml文件中的scala、spark版本和本地的scala、spark版本不同造成的。(一开始,我通过这种方式跑了一个WordCount没问题,没有冲突的地方,后来一个复杂的job再通过这种方式就会冲突了。)
也有因为scala的compile和run的版本不一致,如下面这种,2.11和2.12发生冲突的情况,将两个版本保持一致即可。
<