在PySpark DataFrame中避免写入NULL字段的方法有两种:
na.drop()
方法删除包含NULL值的行:from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例DataFrame
data = [("Alice", 20, None), ("Bob", 25, "Male"), ("Charlie", None, "Male")]
df = spark.createDataFrame(data, ["name", "age", "gender"])
# 删除包含NULL值的行
df_without_null = df.na.drop()
# 将结果写入新的DataFrame或存储系统
df_without_null.write.format("parquet").save("path/to/output")
在示例中,na.drop()
方法会删除包含NULL值的行,然后将结果写入新的DataFrame或存储系统。在这个示例中,结果将以Parquet格式保存。
na.fill()
方法填充NULL值:from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例DataFrame
data = [("Alice", 20, None), ("Bob", 25, "Male"), ("Charlie", None, "Male")]
df = spark.createDataFrame(data, ["name", "age", "gender"])
# 填充NULL值为指定的值
df_filled = df.na.fill({"age": 0, "gender": "Unknown"})
# 将结果写入新的DataFrame或存储系统
df_filled.write.format("parquet").save("path/to/output")
在示例中,na.fill()
方法将NULL值填充为指定的值。在这个示例中,我们将age列的NULL值填充为0,将gender列的NULL值填充为"Unknown"。然后将结果写入新的DataFrame或存储系统。同样,结果将以Parquet格式保存。
这两种方法可以根据你的需求选择使用。如果你希望完全删除包含NULL值的行,则使用na.drop()
方法。如果你希望填充NULL值为指定的值,则使用na.fill()
方法。