我使用movielens數據集以電影信息加載到火花程序,並使用下面的代碼段火花程序行爲不同基於--master被設置爲本地[4]或紗線的客戶端
import org.apache.spark.{SparkConf, SparkContext}
object MovieApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("movie-recommender")
val sc = new SparkContext(conf)
val movieFile = "/mnt/DATASETS/ml-1m/movies.dat"
val movieData = sc.textFile(movieFile)
val movies = movieData.map(_.split("::") match { case Array(movieid, title, genres) =>
val genreList = genres.split("|")
(movieid, title, genreList)
})
println("Num movies:" + movies.count())
movies.foreach { case movielist =>
println("ID:" + movielist._1 + "Title:" + movielist._2)
}
}
}
打印相同的
當運行使用命令 代碼火花提交--master本地[4] --class「MovieApp」電影recommender.jar我得到預期的輸出作爲
*根@ philli毫升]#/usr/lib/spark/bin/spark-submit --master local [4] --class「MovieApp」movie-recommender_2.10-1.0.jar
14/12/05 0點17分37秒WARN NativeCodeLoader:無法加載原生的Hadoop庫平臺...使用內置的Java類適用
民的電影:3883
ID:2020名稱:危險關係(1988)
ID:2021標題:沙丘(1984)
ID:2022標題:2023標題:教父:基督所述的(1988)
ID的最後的誘惑部分III,The(1990)
ID:2024標題:着迷,該(1991)
ID:2025標題:洛麗塔(1997)
ID:2026標題:擾動行爲(1998)
ID:2027標題:黑手黨! (1998年)
ID:2028標題:拯救大兵瑞恩(1998)
ID:2029標題:比利的好萊塢銀幕初吻(1997)
... *
但是當我使用命令運行Hadoop集羣上相同
火花提交--master紗線客戶--class「MovieApp」電影recommender.jar輸出是如下(沒有電影細節???)
不同10* [@根毫升philli]#/ usr/lib中/火花/ bin中/火花提交--master紗線客戶--class 「MovieApp」 電影recommender_2.10-1.0.jar
14/12/05 00:21:05 WARN NativeCodeLoader:無法爲您的平臺加載native-hadoop庫...在適用的情況下使用內置java類 14/12/05 00:21:07 WARN BlockReaderLocal:短路本地讀取功能無法使用,因爲libhadoop無法加載。 --args已棄用。改用--arg。 民的電影:3883 [根@ philli毫升]#*
爲什麼要運行它作爲當地VS羣集上的程序變更的行爲....我建立了火花1.1.1 Hadoop的使用命令
mvn -Pyarn -Phadoop-2.4 -Ddodoop.version = 2.4。0 -DskipTests乾淨 包
我使用的集羣HDP2.1
樣品movies.dat文件如下:
1 ::玩具總動員(1995年)::動畫|兒童|喜劇
2 ::勇敢者的遊戲(1995)::冒險|兒童|幻想
3 :: Grumpier老無所依(1995年)::喜劇|愛情
4 ::等待呼出(1995年)::喜劇|劇情
5 ::新娘第II的父親(1995年)::喜劇
6 ::熱(1995年)::動作|犯罪|驚悚
7 ::薩布麗娜(1995年)::喜劇|愛情
8 ::湯姆·哈克(1995)::冒險|兒童
9 ::猝死(1995 )::行動
10 ::黃金眼(1995)::動作|冒險|驚悚
哦,這是有道理的......嗯,所以如果我想在驅動程序中的數據,那麼我將不得不使用take()。 – gurram 2014-12-10 15:25:32