不多說,直接上干貨!
這篇博客是,
是在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(大數據躺過的坑)