不多说,直接上干货!
这篇博客是,
是在Scala IDEA for Eclipse里maven创建scala和java代码编写环境。
Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
本博文包括:
Scala IDE for Eclipse的下载
Scala IDE for Eclipse的安装
本地模式或集群模式
我们知道,对于开发而言,IDE是有很多个选择的版本。如我们大部分人经常用的是如下。
而我们知道,对于spark的scala开发啊,有为其专门设计的eclipse,Scala IDE for Eclipse。
1、Scala IDE for Eclipse的下载
2、Scala IDE for Eclipse的安装
进行解压
3、Scala IDE for Eclipse的WordCount的初步使用
在这之前,先在本地里安装好java和scala
因为,我这篇博客,是面向基础的博友而分享的。所以,在此,是在Scala IDE for Eclipse里,手动新建scala项目。
注意:推荐使用IDEA , 当然有人肯定还依依不舍Scala IDE for Eclipse。
则,如下是我写的另一篇博客
Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
默认竟然变成了scala 2.11.8去了
这一定要换!
Scala2.11.8(默认的版本) --------> scala2.10.4(我们的版本)
第一步:修改依赖的scala版本,从scala2.11.*,至scala2.10.*。
这里是兼容版本,没问题。Scala2.10.6和我们的scala2.10.4没关系!!!
第二步:加入spark的jar文件依赖
http://spark.apache.org/downloads.html
我这里,以spark-1.5.2-bin-hadoop2.6.tgz为例,其他版本都是类似的,很简单!
http://www.apache.org/dyn/closer.lua/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz
第三步:找到spark依赖的jar文件,并导入到Scala IDE for Eclipse的jar依赖中
添加Spark的jar依赖spark-1.5.2-bin-hadoop2.6.tgz里的lib目录下的spark-assembly-1.5.2-hadoop2.6.0.jar
第四步:在src下,建立spark工程包
第五步:创建scala入口类
定义main方法
第六步:把class变成object,并编写main入口方法。
本地模式
第1步
第2步
第3步
第4步
第5步
第6步
集群模式
这里,学会巧,复制粘贴,WordCount.scala 为 WordCount_Clutser.scala。
现在呢,来从Linux里,拷贝文件到hadoop集群里
即,将
/usr/local/spark/spark-1.5.2-bin-hadoop2.6/README.md 到 / 或 hdfs://SparkSingleNode:9000
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$ pwd
/usr/local/hadoop/hadoop-2.6.0
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$ bin/hadoop fs -copyFromLocal /usr/local/spark/spark-1.5.2-bin-hadoop2.6/README.md hdfs://SparkSingleNode:9000/
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$ bin/hadoop fs -ls /
Found 2 items
-rw-r--r-- 1 spark supergroup 3593 2016-09-18 10:15 /README.md
drwx-wx-wx - spark supergroup 0 2016-09-09 16:28 /tmp
spark@SparkSingleNode:/usr/local/hadoop/hadoop-2.6.0$
// val lines:RDD[String] = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路径,minPartitions指的是最小并行度
// val lines = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路径,minPartitions指的是最小并行度
// val lines = sc.textFile("hdfs://SparkSingleNode:9000/README.md", 1)//没必要会感知上下文
// val lines = sc.textFile("/README.md", 1)//path指的是文件路径,minPartitions指的是最小并行度
val lines = sc.textFile("/README.md")//为什么,这里不写并行度了呢?因为,hdfs会有一个默认的
如,我们的这里/里,有188个文件,每个文件小于128M。
所以,会有128个小集合。
当然,若是大于的话,我们可以人为干预,如3等
做好程序修改之后,
我这里啊,遇到如上的错误。
http://blog.csdn.net/weipanp/article/details/42713121
(3)Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(Native Method)
修复方法:在hadoop2.6源码里找到NativeCrc32.java,创建与源码一样的包名,拷贝NativeCrc32.java到该包工程目录下。
hadoop-2.6.0-src/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeCrc32.java
以及,缺少hadoop.dll,注意是64位的。放到hadoop-2.6.0下的bin目录下
玩玩spark-1.5.2-bin-hadoop2.6.tgz
继续,,,出现了一些问题!
其实啊,在集群里,模板就是如下
val file = spark.textFile("hdfs://...”)
val counts = file.flatMap("line => line.spilt(" "))
.map(word => (word,1))
.reduceByKey(_+_)
counts.saveAsTextFile("hdfs://...”)
同时,大家可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/
人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获
以及对应本平台的QQ群:161156071(大数据躺过的坑)