当前位置: 首页 > article >正文

Spark基本命令详解

文章目录

  • Spark基本命令详解
    • 一、引言
    • 二、Spark Core 基本命令
      • 1、Transformations(转换操作)
        • 1.1、groupBy(func)
        • 1.2、filter(func)
      • 2、Actions(动作操作)
        • 2.1、distinct([numTasks])
        • 2.2、sortBy(func, [ascending], [numTasks])
    • 三、Spark SQL 基本命令
      • 3.1、读取数据
    • 四、使用示例
      • 4.1、统计年龄小于25岁的人群的爱好排行榜
    • 五、总结

Spark基本命令详解

一、引言

Apache Spark 是一个开源的分布式计算系统,它提供了一个快速且通用的集群计算平台。本文将详细介绍Spark的一些基本命令及其使用示例,帮助开发者更好地理解和应用Spark。
在这里插入图片描述

二、Spark Core 基本命令

1、Transformations(转换操作)

在Spark中,转换操作是指从一个RDD到另一个RDD的操作。以下是一些常用的转换操作:

1.1、groupBy(func)

groupBy(func):按照func的返回值进行分组。

val rdd1: RDD[Int] = sc.makeRDD(Array(1, 3, 4, 20, 4, 5, 8),2)
val rdd2 = rdd1.groupBy(x => if(x % 2 == 0) "odd" else "even")
rdd2.collect.foreach(kv => {
    kv._2.foreach(it => println(kv._1, it))
})
1.2、filter(func)

filter(func):过滤,返回一个新的RDD,由func的返回值为true的那些元素组成。

val rdd1 = sc.makeRDD(Array("xiaoli", "laoli", "laowang", "xiaocang", "xiaojing", "xiaokong"))
val rdd2 = rdd1.filter(_.contains("xiao"))
rdd2.collect().foreach(println)

2、Actions(动作操作)

动作操作是指从RDD计算得到最终结果的操作。以下是一些常用的动作操作:

2.1、distinct([numTasks])

distinct([numTasks]):对RDD中元素执行去重操作,参数表示任务的数量,默认值和分区数保持一致。

val rdd1: RDD[Int] = sc.makeRDD(Array(10, 10, 2, 5, 3, 5, 3, 6, 9, 1))
rdd1.distinct().collect().foreach(println)
2.2、sortBy(func, [ascending], [numTasks])

sortBy(func, [ascending], [numTasks]):使用func先对数据进行处理,按照处理后结果排序。

val rdd1: RDD[Int] = sc.makeRDD(Array(1,3,4,10,4,6,9,20,30,16))
val rdd2: RDD[Int] = rdd1.sortBy(x => x)
println(s"默认排序: ${rdd2.collect().mkString(", ")}")

三、Spark SQL 基本命令

3.1、读取数据

在Spark SQL中,你可以使用SparkSession来读取数据,并进行处理。以下是读取目录下文本数据的示例:

val spark: SparkSession = SparkSession.builder().master("local[*]").appName("SparkSQL").getOrCreate()
val sc: SparkContext = spark.sparkContext
sc.setLogLevel("WARN")
val Schema: StructType = new StructType()
  .add("name","string")
  .add("age","integer")
  .add("hobby","string")
val dataDF: DataFrame = spark.readStream.schema(Schema).json("D:\\data\\spark\\data")

四、使用示例

4.1、统计年龄小于25岁的人群的爱好排行榜

以下是一个使用Spark Structured Streaming进行实时数据处理的示例,统计年龄小于25岁的人群的爱好排行榜:

import spark.implicits._
val result: Dataset[Row] = dataDF.filter($"age" < 25).groupBy("hobby").count().sort($"count".desc)
result.writeStream
  .format("console")
  .outputMode("complete")
  .trigger(Trigger.ProcessingTime(0))
  .start()
  .awaitTermination()

五、总结

Spark提供了丰富的基本命令,使得大数据处理变得简单高效。通过掌握这些基本命令,开发者可以更加灵活地处理各种复杂的数据处理任务。希望本文能够帮助你更好地理解和使用Spark。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Spark:一文带你掌握Spark基础命令_spark命令-CSDN博客

http://www.kler.cn/a/415341.html

相关文章:

  • net9 abp vnext 多语言通过数据库动态管理
  • 链动星海 质引未来|中信银行加码科技金融 “接力式”服务助力“新质生产力”释放
  • 专属主机服务器和ECS服务器有什么区别?
  • 将table中行的赋值到其他模块去维护不显示,this.$forceUpdate()无效,刷新key 放到完整模块里不可行
  • 【算法 python A*算法的实现】
  • Spring Boot英语教育网站:从零到一
  • UI控件使用说明
  • 力扣 岛屿数量-200
  • Java—I/O流
  • react + vite 中的环境变量怎么获取
  • 网络安全中的数据科学如何重新定义安全实践?
  • 嵌入式开发之Bootloader移植(一)
  • 在更改文件名字关于PermissionError: [WinError 5] 拒绝访问。
  • DeepSpeed框架配置解析:一份详细的日志分析
  • 电子应用设计方案-30:智能扫地机器人系统方案设计
  • 18. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--账本
  • eBay 基于 Celeborn RESTful API 进行自动化工具集成实践
  • Flink四大基石之CheckPoint
  • 计算机网络:数据链路层(二)
  • Milvus×Florence:一文读懂如何构建多任务视觉模型
  • 矩阵重构——reshape函数
  • Vue 3 组件通信教程
  • 不同云计算网络安全等级
  • HTTPTomcatServlet
  • Node报错:npm error code ETIMEDOUT
  • 智能合约开发框架--Hardhat