在 PySpark 中,DataFrame
是一个分布式数据集,类似于 Pandas 中的 DataFrame。DataFrame
提供了许多内置的方法来帮助你处理数据。以下是一些常用的 DataFrame
方法及其简要说明:
1、数据查询和选择
-
select()
:- 选择 DataFrame 中的一个或多个列。
- 示例:
df.select("column1", "column2")
-
selectExpr()
:- 使用 SQL 表达式选择列。
- 示例:
df.selectExpr("column1 as new_column_name", "column2 + 1 as incremented_column")
-
where()
或filter()
:- 根据条件过滤行。
- 示例:
df.where(col("age") > 30)
或df.filter(col("age") > 30)
-
groupBy()
:- 对 DataFrame 进行分组,并执行聚合操作。
- 示例:
df.groupBy("city").agg(count("*").alias("count"), sum("age").alias("total_age"))
-
orderBy()
或sort()
:- 对 DataFrame 的行进行排序。
- 示例:
df.orderBy(col("age").desc())
-
distinct()
:- 返回去重后的 DataFrame。
- 示例:
df.distinct()
-
dropDuplicates()
或drop_duplicates()
:- 根据某些列去重。
- 示例:
df.dropDuplicates(["column1"])
-
head()
:- 获取 DataFrame 的前几行。
- 示例:
df.head(5)
-
show()
:- 显示 DataFrame 的内容。
- 示例:
df.show()
-
collect()
:- 将 DataFrame 的内容收集到驱动程序内存中。
- 示例:
df.collect()
2、数据转换
-
withColumn()
:- 添加或更新 DataFrame 中的列。
- 示例:
df.withColumn("new_column", col("old_column") + 1)
-
withColumnRenamed()
:- 重命名 DataFrame 中的列。
- 示例:
df.withColumnRenamed("old_column_name", "new_column_name")
-
drop()
:- 删除 DataFrame 中的列。
- 示例:
df.drop("column_to_drop")
-
fillna()
或na.fill()
:- 替换 DataFrame 中的空值。
- 示例:
df.fillna(0)
或df.na.fill(0)
-
replace()
:- 替换 DataFrame 中的值。
- 示例:
df.replace("old_value", "new_value")
3、数据连接
-
join()
:- 连接两个 DataFrame。
- 示例:
df1.join(df2, "common_column", "inner")
-
union()
:- 合并两个 DataFrame。
- 示例:
df1.union(df2)
-
subtract()
:- 从一个 DataFrame 中减去另一个 DataFrame 的行。
- 示例:
df1.subtract(df2)
-
intersect()
:- 获取两个 DataFrame 的交集。
- 示例:
df1.intersect(df2)
4、数据读写
-
write
:- 将 DataFrame 写入文件或数据库。
- 示例:
df.write.csv("path/to/directory")
-
read
:- 从文件或数据库读取数据并创建 DataFrame。
- 示例:
spark.read.csv("path/to/directory")
-
saveAsTable()
:- 将 DataFrame 保存为 Hive 表。
- 示例:
df.saveAsTable("my_table")
-
createOrReplaceTempView()
:- 将 DataFrame 注册为临时视图。
- 示例:
df.createOrReplaceTempView("my_temp_view")
-
createOrReplaceGlobalTempView()
:- 将 DataFrame 注册为全局临时视图。
- 示例:
df.createOrReplaceGlobalTempView("my_global_temp_view")
5、其他实用方法
-
cache()
:- 缓存 DataFrame 以加快后续操作的速度。
- 示例:
df.cache()
-
persist()
:- 持久化 DataFrame 以提高性能。
- 示例:
df.persist()
或df.persist(StorageLevel.MEMORY_AND_DISK)
-
count()
:- 计算 DataFrame 中的行数。
- 示例:
df.count()
-
describe()
:- 描述 DataFrame 中的统计信息。
- 示例:
df.describe()
-
explain()
:- 显示 DataFrame 的逻辑和物理执行计划。
- 示例:
df.explain()
这些方法可以帮助进行数据处理、清洗、转换和分析。