spark 学习总结 (第三章)

第 2 章

介绍了 Apache Spark 的基础知识。我们讨论了转换和动作,以及 Spark 如何惰性执行转换 操作的 DAG 图以优化 DataFrame 上的物理执行计划。我们还讨论了如何将数据组织到分区中, 并为处理更复杂的转换设定多个阶段。在第三章中我们将介绍庞大的 Spark 生态系统,并了解 Spark 中提供的包括流数据处理和机器学习等一些更高级的概念和工具。

第 3 章 Spark 工具集介绍

     

      本章包括以下内容:
         使用spark-submit运行应用程序
         Dataset:类型安全的结构化数据 API
         结构化流处理
         机器学习和高级分析
         弹性分布式数据集(RDD):Spark的低级API

         SparkR
         第三方软件包生态系统

spark-submit运行生产应用程序

       spark-submit将你的应用程 序代码发送到一个集群并在那里执行。

       spark-submit 提供了若干控制选项,你可以指定应用程序需要的资源,以及应用程序的运行方 式,还有运行参数等

       Spark 附带的 Scala 示例应用程序 ,在你下载 Spark 的 目录中运行以下命令:

./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local \ ./examples/jars/spark-examples_2.11-2.2.0.jar 10

       该示例应用程序计算 pi 的值以达到某个精度。在这里,我们告诉 spark-submit 我们想在本地机器上运行,我们想运行哪个类            和  哪个 JAR,以及一些命令行参数。

Dataset:类型安全的结构化数据 API

          Dataset用于在 Java 和 Scala 中编写静态类型的代码。

          DataFrame 是一个分布式的类型为 Row 的对象集合,它可以存储多种类型的表格数据。Dataset API 让用户可以用 Java /                    Scala 类定义 DataFrame 中的每条记 录,并将其作为类型对象的集合来操作,类似于 Java ArrayList 或 Scala Seq

          例子:

 // in Scala
   case class Flight(DEST_COUNTRY_NAME: String,
     ORIGIN_COUNTRY_NAME: String,
     count: BigInt)
   val flightsDF = spark.read
     .parquet("/data/flight-data/parquet/2010-summary.parquet/")
   val flights = flightsDF.as[Flight]

当你在 Dataset 上调用 collect 或 take 时,它将会收集 Dataset 中合适类型的对象,而不是 DataFrame 的 Row 对象。这样可以很容易地保证类型安全,并以分布式和本地方式安全地执行操作,而无需更改代码:

// in Scala
   flights
     .filter(flight_row => flight_row.ORIGIN_COUNTRY_NAME != "Canada")
     .map(flight_row => flight_row)
     .take(5)
   flights
     .take(5)
     .filter(flight_row => flight_row.ORIGIN_COUNTRY_NAME != "Canada")
     .map(fr => Flight(fr.DEST_COUNTRY_NAME, fr.ORIGIN_COUNTRY_NAME, fr.count + 5))

结构化流处理

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值