【发布时间】:2021-03-27 07:21:05
【问题描述】:
在 pyspark 中使用单独的 json 架构文件为 json 文件创建数据框的最佳方法是什么?。
示例 json 文件
{"ORIGIN_COUNTRY_NAME":"Romania","DEST_COUNTRY_NAME":"United States","count":1}
{"ORIGIN_COUNTRY_NAME":"Ireland","DEST_COUNTRY_NAME":"United States","count":264}
{"ORIGIN_COUNTRY_NAME":"India","DEST_COUNTRY_NAME":"United States","count":69}
{"ORIGIN_COUNTRY_NAME":"United States","DEST_COUNTRY_NAME":"Egypt","count":24}
读取此文件的代码
df_json = spark.read.format("json")\
.option("mode", "FAILFAST")\
.option("inferschema", "true")\
.load("C:\\pyspark\\data\\2010-summary.json")
如果我不想使用“inferschema”选项而想使用 json 架构文件,请问我该怎么做?
json 架构文件
{"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {"ORIGIN_COUNTRY_NAME": {"type": "string"},
"DEST_COUNTRY_NAME": {"type": "string"},
"count": {"type": "integer"}
},
"required": ["ORIGIN_COUNTRY_NAME","DEST_COUNTRY_NAME","count"]
}
【问题讨论】:
-
您的问题可以做一些澄清。您是否能够编辑您已经发布的内容,请提供一个代码示例来说明您的意思。也许是直接将模式输入代码本身的示例。
-
您可以解析您的架构文件并创建适当的
StructType架构,然后将其传递给您的spark.read调用。这是 scala 的示例。但在 pyspark 中也应该这样做。 sparkbyexamples.com/spark/spark-read-json-with-schema -
我在发布之前看到了那个例子。在我的情况下,我想将架构保留在代码之外,原因是,如果将来有任何架构更改,我不想更改实际代码,我可以只更新架构文件。我想知道是否有办法做到这一点。
标签: json apache-spark pyspark apache-spark-sql pyspark-dataframes