Spark学习进度2

时间:2021-01-12
本文章向大家介绍Spark学习进度2,主要包括Spark学习进度2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

入门

第一个应用的运行

  1. 进入 Spark 安装目录中

    cd /export/servers/spark/
    
  2. 运行 Spark 示例任务

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node01:7077,node02:7077,node03:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    /export/servers/spark/examples/jars/spark-examples_2.11-2.2.3.jar \
    100
    
  3. 运行结果

    Pi is roughly 3.141550671141551
    

编写 Spark 程序

Spark shell

  • Spark shell 是 Spark 提供的一个基于 Scala 语言的交互式解释器, 类似于 Scala 提供的交互式解释器, Spark shell 也可以直接在 Shell 中编写代码执行

  • 启动 Spark shell

    • 进入到spark安装目录spark-shell --master master 就可以提交Spark 任务

    • master配置

      地址 解释
      local[N] 使用 N 条 Worker 线程在本地运行
      spark://host:port 在 Spark standalone 中运行, 指定 Spark 集群的 Master 地址, 端口默认为 7077
      mesos://host:port 在 Apache Mesos 中运行, 指定 Mesos 的地址
      yarn 在 Yarn 中运行, Yarn 的地址由环境变量 HADOOP_CONF_DIR 来指定
    • 测试

      • 创建文件
      • 启动spark-shell
      • 执行代码
  • Spark shell 的原理是把每一行 Scala 代码编译成类, 最终交由 Spark 执行

Spark-submit

  • Spark submit 是一个命令, 用于提交 Scala 编写的基于 Spark 框架, 这种提交方式常用作于在集群中运行任务

读取 HDFS 上的文件

  1. 上传文件到hdfs

    cd /export/data
    hdfs dfs -mkdir /dataset
    hdfs dfs -put wordcount.txt /dataset/
    
  2. 在Spark shell中访问hdfs

    val sourceRdd = sc.textFile("hdfs://node01:8020/dataset/wordcount.txt")
    val flattenCountRdd = sourceRdd.flatMap(_.split(" ")).map((_, 1))
    val aggCountRdd = flattenCountRdd.reduceByKey(_ + _)
    val result = aggCountRdd.collect