parquet合并模式与不同模式

vnzz0bqm  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(420)

在将json读入Dataframe并合并模式时,这允许您推断数据并得出最佳模式。这允许您将给定年份的大量json文件读入Dataframe;效果很好。我们希望利用parquet列功能,并最终将每个json文件转换为parquet,不过我们遇到了一个问题,即不能将模式与parquet文件合并,因为parquet会推断数据并为每个parquet文件创建一个模式。为什么通过Dataframe的Parquet文件不允许重写模式并推断数据,以便在没有不兼容的数据类型异常的情况下读入所有数据?我想避免在创建parquet文件时必须提前创建一个通用模式。
有什么解决方案可以读取Parquet文件并推断数据类型,比如如何将大量json文件读入Dataframe?

df_p = spark.read.options(mergeSchema=True).parquet('s3a://parquet_example_data/year=2020/')
Exception thrown:
Caused by: org.apache.spark.SparkException: Failed to merge fields 'field1' and 'field1'. Failed to merge fields 'field2' and 'field2'. Failed to merge fields 'field3' and 'field3'. Failed to merge fields 'field4' and 'field4'. Failed to merge fields 'field5' and 'field5'. Failed to merge incompatible data types bigint and double
    at org.apache.spark.sql.types.StructType$$anonfun$merge$1$$anonfun$apply$3.apply(StructType.scala:502)
    at org.apache.spark.sql.types.StructType$$anonfun$merge$1$$anonfun$apply$3.apply(StructType.scala:495)
    at scala.Option.map(Option.scala:146)
    at org.apache.spark.sql.types.StructType$$anonfun$merge$1.apply(StructType.scala:495)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题