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

trnvg8h3  于 2022-12-22  发布在  Spark
关注(0)|答案(1)|浏览(200)

目前我正在用以下代码解析我的Json提要:

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

只要值都存在,这就可以正常工作,但是如果我有一个Json(如Python dict),如下所示:

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

我想得到一个在age列上有一个值null的生成的DataFrame,但是我现在得到的是_corrupt_record

polhcujo

polhcujo1#

导入缺少值的JSON对Spark的限制很大,一个简单的解决方法是将文件读取为文本,然后使用所需的模式进行解析。
假设JSON缺少“age”字段:

!cat /content/sample_data/test.json

{ "name": "John", "surname": "Smith" }

首先,以文本形式读取文件,然后使用所需的模式从文件中创建 Dataframe :

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)

相关问题