如何使用Pyspark将Json中的None值转换为null ?



目前我正在解析我的Json提要:

rdd = self.spark.sparkContext.parallelize([(json_feed)])
df = self.spark.read.json(rdd)

只要值都在那里就可以工作,但是如果我有一个Json(作为Python字典),比如:

json_feed = { 'name': 'John', 'surname': 'Smith', 'age': None }

我想在age列上获得具有null值的生成的DataFrame,但我现在得到的是_corrupt_record。是否有一种方法来解析Nonenull与Pyspark?

在Spark中导入缺少值的JSON是非常受限的。一个简单的解决方法是将文件作为文本读取,并使用所需的模式进行解析。

假设JSON缺少"age"字段:

!cat /content/sample_data/test.json
{ "name": "John", "surname": "Smith" }

首先,将文件作为文本读取,然后使用所需的模式从它创建数据框架:

rdd = spark.sparkContext.textFile("/content/sample_data/test.json").map(eval)
df = spark.createDataFrame(data=rdd, schema="name string, surname string, age int")
df.show(truncate=False)
+----+-------+----+
|name|surname|age |
+----+-------+----+
|John|Smith  |null|
+----+-------+----+
df.printSchema()
root
|-- name: string (nullable = true)
|-- surname: string (nullable = true)
|-- age: integer (nullable = true)

最新更新