我使用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