zoukankan      html  css  js  c++  java
  • Spark:一个独立应用

    Spark:一个独立应用

    关于构建

    Java和Scala

    在Java和Scala中,只需要给你的应用添加一个对于spark-core的Maven依赖.

    Python

    在Python中,可以把应用写成脚本,然后使用Spark自带的bin/spark-submit脚本来运行.spark-submit会引入Python程序的Spark依赖.使用方式如下所示.
    /PATH_TO_SPARK/bin/spark-submit my_python_script.py

    初始化SparkContext

    • 先创建一个SparkConf对象来配置应用
    • 基于SparkConf创建一个SparkContext对象

    Python示例

    代码

    from pyspark import SparkConf, SparkContext
    
    
    conf = SparkConf().setMaster("local").setAppName("My App")
    sc = SparkContext(conf = conf)
    

    运行

    spark-submit spark-app.py
    

    Scala示例

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    
    val conf = new SparkConf().setMaster("local").setAppName("My App")
    val sc = new SparkContext(conf)
    

    Java示例

    import org.apache.spark.SparkConf
    import org.apache.spark.api.java.JavaSparkContext
    
    SparkConf conf = new SparkConf().setMaster("local").setAppName("My App");
    JavaSparkContext sc = new JavaSparkContext(conf);
    

    说明

    上述例子是创建SparkContext的最基本的方法,你只需传递两个参数:

    • 集群URL(上述是local),告诉Spark如何运行连接到集群上
    • 应用名可以用来在集群管理器的用户界面找到该应用

    独立应用示例

    创建空白目录,在新建目录下,新建文件simpleApp.Scala,添加如下代码.

    Scala代码

    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    import org.apache.spark.SparkConf
    
    
    object SimpleApp {
        def main(args: Array[String]) {
            val logFile = "README.md"
            val conf = new SparkConf().setAppName("Simple Application")
            val sc = new SparkContext(conf)
            val logData = sc.textFile(logFile, 2).cache()
            val numAs = logData.filter(line => line.contains("a")).count()
            val numBs = logData.filter(line => line.contains("b")).count()
            println("Lines with a: %s, lines with b: %s".format(numAs, numBs))
        }
    }
    

    构建文件

    在新建目录下,新建文件simple.sbt,复制如下代码.

    name := "Simple Application"
    version := "1.0"
    scalaVersion := "2.11.8"
    libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
    
    • 使用scala -version命令查看scala版本,使用spark-shell可以查看spark版本及scala版本,使用:quit命令退出spark-shell

    说明

    • 程序构建需要安装sbt
    • 程序用来统计README.md文件中包含ab的行数
    • 需要将README.md放到Spark使用的文件系统的相应位置.比如,如果使用的是HDFS,README.md应该放在/user/YOUR_USER_NAME/目录下, 或者将val logFile = "README.md"中的文件路径改为绝对路径,例如:val logFile = "/user/mint/README.md".

    构建

    新建文件夹下包含的文件

    $ ls
    simpleApp.scala  simple.sbt
    

    执行构建

    $ sbt package
    [info] Set current project to Simple Project (in build file:/home/public/program/scala/self-cont-app/)
    [info] Updating {file:/home/public/program/scala/self-cont-app/}self-cont-app...
    [info] Resolving jline#jline;2.12.1 ...
    [info] Done updating.
    [info] Compiling 1 Scala source to /home/public/program/scala/self-cont-app/target/scala-2.11/classes...
    [info] Packaging /home/public/program/scala/self-cont-app/target/scala-2.11/simple-project_2.11-1.0.jar ...
    [info] Done packaging.
    [success] Total time: 11 s, completed Sep 8, 2016 3:12:31 PM
    

    运行构建的程序

    $ spark-submit --class "SimpleApp" --master local[4] ./target/scala-2.11/simple-project_2.11-1.0.jar 
    SLF4J: Class path contains multiple SLF4J bindings.
    ...
    Lines with a: 61, lines with b: 27
    
  • 相关阅读:
    低落
    栗子
    Wireless Password HDU
    考研路茫茫——单词情结 HDU
    DNA Sequence POJ
    HDU 6138 Fleet of the Eternal Throne 多校#8 AC自动机
    Rikka with Candies HDU
    Wavel Sequence HDU
    Counting Divisors HDU
    Codeforces Round #424 E. Cards Sorting 线段树/数据结构瞎搞/模拟
  • 原文地址:https://www.cnblogs.com/bovenson/p/5801538.html
Copyright © 2011-2022 走看看