在hadoop和spark中用null替换“”字符串

8tntrjer  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(462)

嗨,我有一个项目,使用hdfs,Hive,Spark技术。当我导入数据时,对于数字字段,如果数据不存在,它将被替换为null。但对于字符串,它将被空字符串“”替换。为了解决这个问题,我在配置单元中创建表时使用了这一行。

TBLPROPERTIES('serialization.null.format'='');

但当我将其转换为sparkDataframe时,空字符串仍然表示为“”而不是null
原因是什么。。?配置单元中的某些属性是否不支持spark。。?

1tuwyuhd

1tuwyuhd1#

@马努,
请将此作为将问题转换为sparkDataframe的摘要:


## Create a sample DataFrame

testDF = sqlContext.createDataFrame([Row(col1='foo', col2=1), Row(col1='', col2=2), Row(col1=None, col2='')])

这些函数将根据您的请求将所有空字符串转换为null

def blank_if_null(z):
        return when(col(z) != "", col(z)).otherwise(None)

dfWithEmptyReplaced = testDF.withColumn("col1", blank_as_null("col1"))

相关问题