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")