大数据学习——spark学习

计算圆周率

[root@mini1 bin]# ./run-example SparkPi

 

 

 

[root@mini1 bin]# ./run-example SparkPi 10

 

[root@mini1 bin]# ./run-example SparkPi 1000

 

运行spark-shell的两种方式:

1直接运行spark-shell 

  单机通过多线程跑任务,只运行一个进程叫submit

2运行spark-shell --master spark://mini1:7077

  将任务运行在集群中,运行submit在master上,运行executor在worker上

 

 

启动

[root@mini1 bin]# ./spark-shell 

 

hdfs

hadoop/sbin/start-dfs.sh

 

计算wordcount

 sc.textFile("/root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

 

升序,降序排列

 

mapReduce执行流程

 

 

从hdfs采集数据

上传文件 hdfs dfs -put words.txt / 

sc.textFile("hdfs://mini1:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect

 

 

通过spark的api写wordcount 

本地运行

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by Administrator on 2019/6/11.
  */
object WordCount extends App {
  //创建conf,设置应用的名字和运行的方式,local[2]运行2线程,产生两个文件结果

  val conf = new SparkConf().setAppName("wordcount").setMaster("local[2]")

  //创建sparkcontext
  val sc = new SparkContext(conf)


  val file: RDD[String] = sc.textFile("hdfs://mini1:9000/words.txt")
  val words: RDD[String] = file.flatMap(_.split(" "))
  //压平,分割每一行数据为每个单词
  val tuple: RDD[(String, Int)] = words.map((_, 1))
  //将单词转换为(单词,1)
  val result: RDD[(String, Int)] = tuple.reduceByKey(_ + _)
  //将相同的key进行汇总聚合
  val resultSort: RDD[(String, Int)] = result.sortBy(_._2, false) //排序
  //  result.collect() //在命令行打印
  resultSort.foreach(println)


}

 

集群运行

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by Administrator on 2019/6/11.
  */
object WordCount {
  def main(args: Array[String]) {

    //创建conf,设置应用的名字和运行的方式,local[2]运行2线程,产生两个文件结果
    //.setMaster("local[1]")采用1个线程,在本地模拟spark运行模式
    val conf = new SparkConf().setAppName("wordcount")

    //创建sparkcontext
    val sc = new SparkContext(conf)


    val file: RDD[String] = sc.textFile("hdfs://mini1:9000/words.txt")
    val words: RDD[String] = file.flatMap(_.split(" "))
    //压平,分割每一行数据为每个单词
    val tuple: RDD[(String, Int)] = words.map((_, 1))
    //将单词转换为(单词,1)
    val result: RDD[(String, Int)] = tuple.reduceByKey(_ + _)
    //将相同的key进行汇总聚合
    val resultSort: RDD[(String, Int)] = result.sortBy(_._2, false) //排序
    resultSort.saveAsTextFile(args(1))

  }


}

打包

 

把该代码包传到任意一台装有spark的机器上

 

我上传到了bin下

 

 提交

[root@mini1 bin]# ./spark-submit --help
#开始加了这两个参数 导致一直运行失败,链接超时,还去问了初夏老师
[root@mini1 bin]# ./spark-submit --master spark://mini1:7077--class com.cyf.WordCount --executor-memory 200M --total-executor-cores 1 original-spark_6_01-1.0-SNAPSHOT.jar hdfs://mini1:9000/words.txt hdfs://mini1:9000/ceshi/wordcountcluster

[root@mini1 bin]#./spark-submit --master spark://mini1:7077 --class com.cyf.WordCount  original-spark_6_01-1.0-SNAPSHOT.jar hdfs://mini1:9000/words.txt hdfs://mini1:9000/ceshi/wordcountcluster

 

开始加上边两个参数运行,一直报连接超时的错误

 

后来把参数去掉,运行成功了

 

 

 

 

 

 

 

 

 

python

wo.py

#!/usr/bin/python

from pyspark import SparkContext, SparkConf

conf = SparkConf().setAppName("aaa").setMaster("spark://mini1:7077")
sc = SparkContext(conf=conf)
data = ["tom", "lilei", "tom", "lilei", "wangsf"]
rdd = sc.parallelize(data).map(lambda x: (x, 1 )).reduceByKey(lambda a, b: a + b).saveAsTextFile("hdfs://mini1:9000/ceshi/python2")

 上传,运行

[root@mini1 bin]# ./spark-submit wo.py

 

 

 

 

 

 

posted on 2019-06-10 18:46  o_0的园子  阅读(352)  评论(0编辑  收藏  举报