我是新来的pyspark,请让我知道,如果你有一个解决这个问题的方法
我在pyspark中创建了一个自定义模式,如下所示
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType,StructField, StringType, IntegerType
structureSchema = StructType([
StructField('col1', StringType(), True),
StructField('col2', StringType(), True),
StructField('col3', StringType(), True) ,
])
我有一个包含多个JSON的文本文件,类似于
{'col1':'abc','col2':'abc1','col3':'qwe'}
{'col1':'abc','col2':'abc1'}
{'col1':'abc''col3':'qwe'} .
当我将这个文件加载到创建的自定义模式中时,它会用空值填充缺少的列条目。
df=spark.read.schema(structureSchema).json(fpath)
col1 col2 col3
abc abc1 qwe
abc abc1 null
abc null null
有没有一种方法可以用默认值填充它们--“NoValueReceived”而不是“null”,如下所示
col1 col2 col3
abc abc1 qwe
abc abc1 NoValueReceived
abc NoValueReceived NoValueReceived
2条答案
按热度按时间1tuwyuhd1#
在PySpark中,DataFrame.fillna()或DataFrameNaFunctions.fill()用于将所有或选定的多个DataFrame列上的NULL/None值替换为零(0)、空字符串、空格或任何常量文字值。
参考:https://sparkbyexamples.com/pyspark/pyspark-fillna-fill-replace-null-values/
rekjcdws2#
在这种情况下,我认为您可以检查传入数据中是否有该列,例如