• 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 构建独立应用

        待学习。

  • 相关阅读:
    docker (2) 私有仓库的建立
    golang (5) http 请求分析
    java (1)
    golang (5) ---工程管理
    Mac使用一些经验
    数组的遍历
    进制
    数组的初始化
    数组基本概念
    博客开始更新第一天
  • 原文地址:https://www.cnblogs.com/zhangtianyuan/p/7647130.html
Copyright © 2020-2023  润新知