Spark学习之Spark shell 与 Spark-submit

入门

第一个应用的运行

  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
    
原文地址:https://www.cnblogs.com/xp-thebest/p/14269753.html