哈尔滨网站建设唯辛ls15227/宁波网站推广方式怎么样
因为是日志,值得一提的低级错误也不过滤掉了。
1.安装spark的问题
现在spark官网下载的版本是很灵活的,但由于是预安装版本,不会自动导入环境变量。
这个问题不分操作系统,笔者是os X所以陷入思维盲区(mac用户都知道,几乎不太需要手动配置环境变量)。
我们知道spark-shell是一个可执行脚本,spark-shell无法在unix命令行中运行,就应该想到这个原因。
2.环境变量配置的问题
在osX环境下,~/.bash_profile下的路径是配置内容,path是实际上有意义的配置内容。
path这个变量是一串以冒号分隔开的路径
如果您写新的环境变量时没有写入PATH=*:$PATH 或者 PATH=$PATH:*
那么就别source了,所有系统自带的PATH也被弄乱了。
此时,请使用
/usr/bin/open ~/.bash_profile
将PATH修改正确,然后保存、重启电脑。
在启动时环境变量会自动更新一次。
3.运行Scala脚本源文件的问题
推荐在IDEA里运行,直接在导航栏搜索plugins
然后搜索Scala即可
IDEA无法安装插件怎么办?
https://blog.csdn.net/Butterfly_resting/article/details/80434272
自动监测http proxy,亲测可用。
4.在IDEA中导入Spark支持库
导航栏搜索Project Structure,点击library,点击加号,选择JAVA。
找到spark-assembly-xxx-hadoopxxx.jar的jars文件夹,将该文件夹下的jar包全部引进该项目
5. Scala出现illegal cyclic inheritance involving trait Iterable
我用的是2.13.0,的确有这个问题,可能是Jsoup的作者改了代码,总之换个版本。
特别注意:换版本必须换2.12.+的大版本
2.13.3我也试了一下,问题依然存在,也就是说这个版本的Scala只能在命令行运行交互式,或者提交代码。
这个问题我觉得挺严重的,Scala居然没修复。
6.wordcount example
理解wordcount
https://zhuanlan.zhihu.com/p/73346969
wordcount代码(JAVA)
http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0
用wordcount详解shuffle
https://www.jianshu.com/p/ffe495ade383
7.map()和flatmap()区别
map()是将函数用于RDD中的每个元素,将返回值构成新的RDD。
flatmap()是将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成新的RDD
例子:
val rdd = sc.parallelize(List("coffee panda","happy panda","happiest panda party"))
输入
rdd.map(x=>x).collect
结果
res9: Array[String] = Array(coffee panda, happy panda, happiest panda party)
输入
rdd.flatMap(x=>x.split(" ")).collect
结果
res8: Array[String] = Array(coffee, panda, happy, panda, happiest, panda, party)
简单来说就是对元素的操作是不是原子化的,是把元素当初一个原子,还是一个集合来进行这个函数的应用。
TODO:理解shuffle对分布式集群的性能影响。