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博客