zoukankan      html  css  js  c++  java
  • 寒假学习笔记05

    Spark Shell

    Spark 的 shell 作为一个强大的交互式数据分析工具,提供了一个简单的方式来学习 API。它可以使用 Scala(在 Java 虚拟机上运行现有的 Java 库的一个很好方式) 或 Python。在 Spark 目录里使用下面的方式开始运行:

    ./bin/spark-shell
    

      

    Spark 最主要的抽象是叫Resilient Distributed Dataset(RDD) 的弹性分布式集合。RDDs 可以使用 Hadoop InputFormats(例如 HDFS 文件)创建,也可以从其他的 RDDs 转换。让我们在 Spark 源代码目录从 README 文本文件中创建一个新的 RDD。

    scala> val textFile = sc.textFile("README.md")
    textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3
    

      RDD 的 actions 从 RDD 中返回值,transformations 可以转换成一个新 RDD 并返回它的引用。

    让我们开始使用几个操作:

    scala> textFile.count() // RDD 的数据条数
    res0: Long = 126
    
    scala> textFile.first() // RDD 的第一行数据
    res1: String = # Apache Spark
    

      使用一个 transformation,我们将使用 filter 在这个文件里返回一个包含子数据集的新 RDD。

    scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
    linesWithSpark: spark.RDD[String] = spark.FilteredRDD@7dd4af09
    

      把 actions 和 transformations 链接在一起:

    scala> textFile.filter(line => line.contains("Spark")).count() // 有多少行包括 "Spark"?
    res3: Long = 15
    

      

    RDD actions 和 transformations 能被用在更多的复杂计算中。比方说,我们想要找到一行中最多的单词数量:

    scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
    res4: Long = 15
    

     将行映射成一个整型数值产生一个新 RDD。 在这个新的 RDD 上调用 reduce 找到行中最大的个数。 map 和 reduce 的参数是 Scala 的函数串(闭包),

    scala> import java.lang.Math
    import java.lang.Math
    
    scala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
    res5: Int = 15
    

      Spark 支持把数据集拉到集群内的内存缓存中。当要重复访问时这是非常有用的,例如当我们在一个小的热(hot)数据集中查询,或者运行一个像网页搜索排序这样的重复算法。作为一个简单的例子,把 linesWithSpark 数据集标记在缓存中:

    scala> linesWithSpark.cache()
    res7: spark.RDD[String] = spark.FilteredRDD@17e51082
    
    scala> linesWithSpark.count()
    res8: Long = 15
    
    scala> linesWithSpark.count()
    res9: Long = 15
    

      

    迷失在灿烂之中 消失在万里晴空
  • 相关阅读:
    os.mkdir()与 shutil.rmtree()对文件夹的 创建与删除
    tf.assign_add
    任意图像尺寸变成目标尺寸(包含相应的boxes的变换)
    文件的读取(txt文件)
    tensorflow中使用变量作用域及tf.variable(),tf,getvariable()与tf.variable_scope()的用法
    python中字典的建立
    图像上划凸多边形(convexHull()函数)
    Cypress 系列之----01 安装和使用
    Excel应用----制作二级下拉菜单【转】
    Selenium系列之--08 操作已打开的浏览器
  • 原文地址:https://www.cnblogs.com/wxy2000/p/12291290.html
Copyright © 2011-2022 走看看