Spark之pyspark转换函数

0、前言

 本文列举5个常见的RDD转换函数:

操作 含义
filter(func) 筛选出满足函数func的元素,并返回一个新的数据集
map(func) 将每个元素传递到函数func中,并将结果返回一个新的数据集
flatMap(func) 与map类似,但每个输入元素都可以映射到0个或多个输出结果
groupByKey() 应用于(K, V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集
reduceByKey(func) 应用于(K, V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中每个值是将每个key传递到函数func中进行聚合后的结果

1、filter(func)

word.txt:
Hadoop is good
Spark is better
Spark is fast

# sc.textFile('word.txt')是创建RDD对象的一种方式,可以是打开本地文件,可以是打开HDFS文件,也可以是打开云端文件
# 另一种创建RDD对象的方式是并行化数组或集合,eg:sc.parallelize([1, 2, 3, 4, 5])
lines = sc.textFile('word.txt')
linesWithSpark = lines.filter(lambda line : 'Spark' in line)
# collect是动作函数,作用是返回RDD中的数据,以list形式
linesWithSpark.collect()

输出

Spark is better
Spark is fast

2、map(func)

eg1:

rdd1 = sc.parallelize([1, 2, 3, 4, 5])
rdd2 = rdd1.map(lambda x:x + 10)
rdd2.collect()

输出

11
12
13
14
PySpark中的UDF(User Defined Function,用户自定义函数)是一种特殊类型的函数,允许我们在Spark DataFrame或SQL中使用自定义的Python函数作为转换操作。UDF可以用于在列级别上执行自定义的计算或转换。 要创建一个UDF函数,可以使用`pyspark.sql.functions.udf`方法,并将Python函数作为参数传递给它。然后,可以将UDF应用于DataFrame的一列或多列。 下面是一个简单的示例,展示了如何使用PySpark的UDF函数: ```python from pyspark.sql import SparkSession from pyspark.sql.functions import udf # 创建SparkSession spark = SparkSession.builder.getOrCreate() # 示例函数:将字符串转换为大写 def to_upper(s): return s.upper() # 注册UDF to_upper_udf = udf(to_upper) # 创建示例DataFrame data = [("John", 25), ("Alice", 30), ("Bob", 35)] df = spark.createDataFrame(data, ["name", "age"]) # 应用UDF到'name'列 df.withColumn("name_upper", to_upper_udf(df["name"])).show() ``` 在上面的示例中,我们首先定义了一个Python函数 `to_upper`,它将字符串转换为大写。然后,我们使用`udf`方法将该函数转换为UDF,并将其命名为`to_upper_udf`。最后,我们将UDF应用于DataFrame的'name'列,并在新列'name_upper'中显示结果。 通过使用UDF函数,我们可以使用自定义的Python代码来扩展和定制Spark的功能,以满足特定的需求。希望这个例子能帮助你了解如何在PySpark中使用UDF函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值