Spark操作——转换操作(一)

本文介绍了Spark中的基础转换操作,包括键值转换、map、distinct、flatMap、coalesce、repartition、randomSplit、glom、union、intersection和subtract等。这些操作用于对RDD进行各种数据处理和转换,例如去除重复元素、重分区、合并与拆分数据集。
摘要由CSDN通过智能技术生成
  1. 基础转换操作

  2. 键值转换操作

 

基础转换操作

  • map[U](f:(T)=>U):RDD[U]

对RDD中的每个元素都应用一个指定的函数,以此产生一个新的RDD

scala> var rdd = sc.textFile("/Users/lyf/Desktop/test/data1.txt")
rdd: org.apache.spark.rdd.RDD[String] = /Users/lyf/Desktop/test/data1.txt MapPartitionsRDD[13] at textFile at <console>:24

scala> rdd.map(line => line.split(" ")).collect
res16: Array[Array[String]] = Array(Array(Hello, World), Array(Hello, Tom), Array(Hello, Jerry))
  • distince():RDD[(T)]

去除RDD中重复的元素,返回所有元素不重复的RDD

scala> var rdd = sc.parallelize(List(1,2,2,3,3,3,4,5))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[15] at parallelize at <console>:24

scala> rdd.distinct.collect
res18: Array[Int] = Array(4, 1, 5, 2, 3)
  • distince(numPartions: Int):RDD[T]

scala> var rdd = sc.parallelize(List(1,2,2,3,3,3,4,5))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[15] at parallelize at <console>:24

scala> var rddDistinct = rdd.distinct
rd
影评案例是一个很好的Spark练习案例,可以帮助你熟悉Spark的基本操作和数据处理。下面我为你提供一个简单的影评案例,希望能帮助到你。 1. 数据准备 我们需要一份电影评分数据集,可以从MovieLens网站上下载到,这里我们使用ml-latest-small数据集,该数据集包含了用户对电影的评分、电影信息和用户信息等数据。 2. 数据处理 我们需要将数据导入到Spark,并进行数据预处理。首先,我们需要将数据转换成DataFrame类型,然后对数据进行清洗和整理,例如去掉重复数据、缺失数据处理等。 以下是一个简单的处理代码: ``` from pyspark.sql.functions import col # 读取数据 ratings = spark.read.csv("ratings.csv", header=True, inferSchema=True) # 去重 ratings = ratings.dropDuplicates() # 处理缺失值 ratings = ratings.dropna() # 转换数据类型 ratings = ratings.withColumn("userId", col("userId").cast("int")) ratings = ratings.withColumn("movieId", col("movieId").cast("int")) ratings = ratings.withColumn("rating", col("rating").cast("double")) # 查看数据 ratings.show() ``` 3. 数据分析 我们可以使用Spark进行各种数据分析操作,例如对电影评分进行统计,找出评分最高的电影,计算每个用户的平均评分等。 以下是一个简单的分析代码: ``` from pyspark.sql.functions import desc, avg # 统计每个电影的评分数量和平均评分 movie_ratings = ratings.groupBy("movieId").agg({"rating": "count", "rating": "avg"}) movie_ratings = movie_ratings.withColumnRenamed("count(rating)", "num_ratings").withColumnRenamed("avg(rating)", "avg_rating") # 找出评分最高的电影 top_movies = movie_ratings.orderBy(desc("avg_rating")).limit(10) # 计算每个用户的平均评分 user_ratings = ratings.groupBy("userId").agg(avg("rating")) # 查看结果 top_movies.show() user_ratings.show() ``` 4. 结果展示 最后,我们可以将结果保存到文件或数据库,或者使用可视化工具展示结果。 以上是一个简单的Spark影评案例,希望能够帮助到你。如果你想深入学习Spark,可以尝试更复杂的案例和练习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值