从不同的架构目录中引发读取数据帧



我的Spark程序必须从目录中读取,该目录具有不同的模式的数据

dir/subdir1/files
1,10,外星人
1,11,鲍勃

dir/subdir2/files
2,蓝色,123,芝加哥
2,红色,34,达拉斯

大约有50个带有不同模式的目录。

我的Spark Job必须读取所有这些目录的数据并生成一个合并此文件的文件,如下所示

1,10,外星人;
1、11,鲍勃;
2,蓝色,123,芝加哥;
2,红色,34,达拉斯;

火花数据框架期望在所有目录中架构相同。有什么方法我可以读取不同模式的所有这些文件,并使用Spark

合并为单个文件

带有parquet和不同的模式,我知道有2种策略

  1. 如果模式兼容,则可以使用MergesChema

    spark.read.option("mergeSchema", "true").parquet("Dir/")
    

文档:https://spark.apache.org/docs/latest/sql-programming-guide.html#partition-discovery

  1. 如果列是不兼容的类型,则需要读取单个目录,则需要使用

    将它们转换为JSONRDD
    df.toJSON
    

,然后结合所有jsonrdd

   df.toJSON.union(df2.toJSON)

随后转换回木材

   spark.read.json(finalJsonRDD)

相关内容

  • 没有找到相关文章

最新更新