Spark单节点部署
1. 找到安装文件
1 find / -name spark*.tgz
2. 解压文件到指定目录
1 tar -zxvf ~/experiment/file/spark-2.2.0-bin-hadoop2.7.tgz -C /opt
3. 重命名
1 mv /opt/spark-2.2.0-bin-hadoop2.7 /opt/spark
4. 配置环境变量
1 vim /etc/profile 2 3 #spark install 4 export SPARK_HOME=/opt/spark 5 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
5. 刷新环境变量
1 source /etc/profile
6. 测试
1 spark-shell
Spark交互式Shell
1. 启动
1 spark-shell
2.行数统计案例(Scala版本 ):读取Spark安装目录下的README.md文件,并统计个文件有多少行记录,同时并打印出文档的第一行记录
val lines = sc.textFile("/opt/spark/README.md") lines.count() lines.first()
3.统计README.md文件中spark出现的次数(不区分大小写),将含有spark的行写入到一个独立的文件,保存至/root/out目录中
1 val lines = sc.textFile("/opt/spark/README.md") 2 val res=lines.flatMap(_.split(" ")).map(_.toLowerCase).filter(_.contains("spark")) 3 res.count() 4 res.coalesce(1).saveAsTextFile("/root/out")
4.查看WebUI界面网址master:4040
1 lines.flatMap(.split(" ")).map(.toLowerCase).filter(.contains(“spark”)).count() 2 lines.map(.toLowerCase).filter(_.contains(“spark”)).saveAsTextFile("/root/out") 3 lines.map(.toLowerCase).filter(_.contains(“spark”)).coalesce(1).saveAsTextFile("/root/out") 4 5 #集群 6 #上传文件到集群 7 hdfs dfs -put /opt/XXX /sjw 8 val lines = sc.textFile("hdfs://master:8020/sjw/XXX") 9 lines.coalesce(1).saveAsTextFile("hdfs://master:8020/out")
-----------------------------------------------------------------------------------------------
-
创建RDD(P179)
通过外部数据创建:sc.textFile(data path) -
RDD转换(P180)
对数据集中的每个元素进行转换,一转多:flatMap
过滤:filter
对数据集中的每个元素进行转换:map
全部小写
组装成键值对(word,1)
聚合:reduceByKey
排序:sortBy
返回前n个元素:take(n) -
保存结果(P177)
通过集合Array创建RDD:sc.parallelize(P179)
合并为一个分区:coalesce(1)
把RDD保存为文本文件:saveAsTextFile(out path)
find / -name spark*.tgz tar -zxvf ~/experiment/file/spark-2.2.0-bin-hadoop2.7.tgz -C /opt mv /opt/spark-2.2.0-bin-hadoop2.7 /opt/spark vim /etc/profile #spark install export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin source /etc/profile spark-shell val lines = sc.textFile("/opt/spark/README.md") lines.count() lines.first() val lines = sc.textFile("/opt/spark/README.md") val res=lines.flatMap(_.split(" ")).map(_.toLowerCase).filter(_.contains("spark")) res.count() res.coalesce(1).saveAsTextFile("/root/out") lines.flatMap(.split(" ")).map(.toLowerCase).filter(.contains(“spark”)).count() lines.map(.toLowerCase).filter(_.contains(“spark”)).saveAsTextFile("/root/out") lines.map(.toLowerCase).filter(_.contains(“spark”)).coalesce(1).saveAsTextFile("/root/out") #上传文件到集群 start-dfs.sh hdfs dfs -put /opt/XXX /sjw val lines = sc.textFile("hdfs://master:8020/sjw/XXX") lines.coalesce(1).saveAsTextFile("hdfs://master:8020/out")
val res=lines.flatMap(_.split(" ")).filter(_.length>=3).filter(_.length<=10).map(_.toLowerCase).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).take(3)
sc.parallelize(res).coalesce(1).saveAsTextFile("/root/sjw")