我目前正在阅读每个文件中都有可变模式的json文件。我们使用以下逻辑来读取json - 首先我们读取包含所有字段的基本模式,然后读取实际数据。我们正在使用这种方法,因为基于第一个文件读取来理解模式,但是我们没有将第一个文件中的所有字段都自己获取。因此,只需欺骗代码首先理解架构,然后开始阅读实际数据。
rdd=sc.textFile(baseSchemaWithAllColumns.json).union(pathToActualFile.json)
sqlContext.read.json(rdd)
//Create dataframe and then save as temp table and query
我知道以上只是解决方法,我们需要一个更清晰的解决方案来接受具有不同架构的json文件。
据我所知,还有其他两种方法可以理解here
所提到的架构然而,为此我们看起来需要解析json并将每个字段映射到收到的数据。
似乎有一个镶木地板模式合并的选项,但这看起来主要是从数据框中读取 - 或者我在这里遗漏了一些东西。
读取更改的json文件架构并使用Spark SQL进行查询的最佳方法是什么。
我可以按原样读取json文件并保存为临时表,然后在查询时使用mergeSchema = true