scala和spark的坑

By Dean

SBT,Maven,IDEA

我比较偏爱IDEA,所以使用IDEA来书写scala

一开始不是特别了解SBT,Maven,IDEA项目的区别,因为都差不多,而且都可以运行scala,所以我一开始用了SBT,然后发现这个东西自动默认了,我只要source code改动一下,他马上就会自己重新运行从而显示结果,这听起来很好,但是坑爹的是,我的电脑卡的不行,所以我后来直接用IDEA了

使用IDEA,坑的地方就在于,什么都要自己来设定,包括各种包的依赖,这个是最烦的

Scala和spark版本问题

我tm一开始弄了scala 2.12和spark2.4, 结果发现

spark压根就不支持scala 2.12,这是个实验版本

然后spark对应的scala是2.11

我tm只有scala2.10和scala2.12

好吧,搞了我半天,而且不在之前报错,是在程序运行之后,给你报个predef的错,相应的类方法不一样

有毛病把!!!!

就是说,你如果在main函数里就写点println这种语句,是没问题的,可以正常运行
一旦你用到有关spark的,比如conf,立马报错

神经病!

Hadoop

Spark似乎默认了需要HDFS,所以nnd必须要hadoop

然而hadoop不支持windows啊!

不过,找到了一种方法,

https://github.com/srccodes/hadoop-common-2.2.0-bin

github真是降临人间的天使,有人帮我们写好了hdfs在windows下的支持,只要把这个解压缩之后的根目录设置成你Hadoop的根目录就OK,最好直接设在程序里不要去改环境变量

调试

神经病吧分布式就是这点不好,根本没法调试,因为string还tm是RDD String

只能.foreach(println(_))

说起来,最好的方法还是在一个很小的子集上测试,,然后扩展到其他


以上写于2019/03/27,都是踩得坑,居然才刚刚把环境配好,明天来填坑