zoukankan      html  css  js  c++  java
  • Spark下载与入门(Spark自学二)

    2.1 下载Spark

      略

    2.2 Spark中Python和Scala的shell

      Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自动控制完成。

      降低shell日志级别:conf目录下创建名为log4j.properties文件,将log4j.properties.template文件中内容复制到log4j.properties文件,找到log4j.rootCategory=INFO, console,将其改为log4j.rootCategory=WARN, console

      例2.1: Python行数统计

    >>> lines = sc.textFile("README.md")
    >>> lines.count()
    103                                                                             
    >>> lines.first()
    u'# Apache Spark'

      例2-2: Scala行数统计

    scala> val lines = sc.textFile("README.md")
    lines: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at <console>:24
    
    scala> lines.count()
    res0: Long = 103                                                                
    
    scala> lines.first()
    res1: String = # Apache Spark
    

    2.3 Spark核心概念简介

      从上层来看,每个Spark应用都由一个驱动器程序来发起集群上的各种并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。

      驱动器程序通过一个SparkContext对象来访问Spark。这个对象代表对计算集群的一个连接。

      一旦有了SparkContext,你就可以用它来创建RDD。

      要执行这些操作,驱动器程序一般要管理多个执行器节点。比如,如果我们在集群上运行count()操作,那么不同的节点会统计文件的不同部分的行数。

      例2-4:Python版本筛选的例子

    >>> lines = sc.textFile("README.md")
    >>> pythonLines = lines.filter(lambda line:"Python" in line)
    >>> pythonLines.first()
    u'high-level APIs in Scala, Java, Python, and R, and an optimized engine that'

      例2-5:Scala版本筛选的例子

    scala> val lines = sc.textFile("README.md")
    lines: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at <console>:24
    
    scala> val pythonLines = lines.filter(line => line.contains("Python"))
    pythonLines: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:26
    
    scala> pythonLines.first()
    res0: String = high-level APIs in Scala, Java, Python, and R, and an optimized engine that
    

      Spark会自动将函数(比如line.contains("Python"))发到各个执行器节点上。这样,就可以在单一的驱动器程序中编程,并且让代码自动运行在多个节点上。

    2.4 独立应用

      Spark也可以在Java、Scala或Python的独立程序中被连接使用,这与在shell中使用的区别在于我们需要自行初始化SparkContext。

      在Python中,我们可以把应用写成Python脚本,然后用Spark自带的bin/spark-submit脚本来运行。例:bin/spark-submit my_script.py

      2.4.1 初始化SparkContext

        例2-7:在Python中初始化Spark

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

        例2-8:在Scala中初始化Spark

          略

      2.4.2 构建独立应用

        待学习。

  • 相关阅读:
    模板 无源汇上下界可行流 loj115
    ICPC2018JiaozuoE Resistors in Parallel 高精度 数论
    hdu 2255 奔小康赚大钱 最佳匹配 KM算法
    ICPC2018Beijing 现场赛D Frog and Portal 构造
    codeforce 1175E Minimal Segment Cover ST表 倍增思想
    ICPC2018Jiaozuo 现场赛H Can You Solve the Harder Problem? 后缀数组 树上差分 ST表 口胡题解
    luogu P1966 火柴排队 树状数组 逆序对 离散化
    luogu P1970 花匠 贪心
    luogu P1967 货车运输 最大生成树 倍增LCA
    luogu P1315 观光公交 贪心
  • 原文地址:https://www.cnblogs.com/zhangtianyuan/p/7647130.html
Copyright © 2011-2022 走看看