我有几个parquet文件分布在不同的文件夹中,我使用以下命令将它们读入Databricks上的Spark DF:
df = spark.read.option("mergeSchema", "true").schema(parquet_schema).parquet('/mnt/my_blobstorage/snap/*/*.parquet')
我的parquet schema只包含StringType。然后我显示Dataframe,并另外执行PrintSchema以确保所有列都是StringType。当我尝试将此DF写回我的Blob存储时,通过使用以下命令:
df.write.parquet('/mnt/my_blobstorage/saved/merged_df.parquet')
它给了我以下错误:
Parquet column cannot be converted. Column: [word_c], Expected: StringType, Found: INT64
我已经尝试了我在StackOverflow上找到的所有解决方案,到目前为止都没有任何效果。有什么想法吗?
1条答案
按热度按时间eivnm1vs1#
我复制了上面的场景,得到了同样的错误,即使
printSchema
给出了正确的模式。我同意**@partlov**的观点,这里的dataframe从parquet文件中获取了模式,这就是错误的原因。
在这种情况下,您可以尝试以下解决方法来解决错误。
首先在不给出模式的情况下读取parquet文件。之后使用下面的代码将列类型转换为String。现在,您可以将其写入最终的parquet文件。
我的执行: