重复列例外使用星火

问题描述:

从S3A读平面文件时我有,我后来写进镶木格式,并存储在S3A桶使用多个INT8和字符串列的模式。重复列例外使用星火

当我尝试读取使用SqlContext.read.option("mergeSchema","false").parquet("s3a://....")此拼花文件,我得到下面的异常。

我一直在使用拼花地板工具(模式和元选项)来读取文件拼花尝试过,但我得到一个未知的命令错误。

*Exception in thread "main" org.apache.spark.sql.AnalysisException: Duplicate column(s) : "Int8", "String" found, cannot save to parquet format; 
    at org.apache.spark.sql.execution.datasources.parquet.ParquetRelation.checkConstraints(ParquetRelation.scala:190) 
    at org.apache.spark.sql.execution.datasources.parquet.ParquetRelation.dataSchema(ParquetRelation.scala:199) 
    at org.apache.spark.sql.sources.HadoopFsRelation.schema$lzycompute(interfaces.scala:561) 
    at org.apache.spark.sql.sources.HadoopFsRelation.schema(interfaces.scala:560) 
    at org.apache.spark.sql.execution.datasources.LogicalRelation.<init>(LogicalRelation.scala:37) 
    at org.apache.spark.sql.SQLContext.baseRelationToDataFrame(SQLContext.scala:395) 
    at org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:267) 
    at org.apache.spark.sql.SQLContext.parquetFile(SQLContext.scala:1052) 
    : 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:674) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)* 

如何确保实木复合地板文件的写入是否正确?有谁知道如何解决这个重复的列错误?

试试这个

SqlContext.read.option("mergeSchema","true").parquet("s3a://....") 

这里是documentation这一点。

+0

感谢您的快速回复。不幸的是没有帮助。 –

+0

粘贴如果可能的话 –

+0

我不能粘贴整个代码的完整代码,但如果有帮助,我从地板成功地读取并写到S3A,我试图从S3A VAL engf = sqlContext.read.option(“mergeSchema阅读”,‘真’).parquet(‘S3A:// ’) –

的问题是由于实木复合地板的文件被损坏。一旦使用镶木地板工具确保镶木地板格式正确,我就可以从镶木地板文件读回到Spark中。