我在ADLS不同的文件夹下的Parquet文件,我想把它们合并成一个。路径的文件夹结构如下
我运行下面的代码来做到这一点,但得到一个错误说**“IllegalArgumentException:转置要求所有集合具有相同的大小”**
files = dbutils.fs.ls('abfss://[email protected]/UserData/folder1/folder2/folder3/')
combined_df = None
for fi in files:
df = spark.read.parquet(fi.path)
if combined_df == None:
combined_df = df
else:
combined_df = combined_df.union(df)
有谁能帮忙解决这个错误吗?
任何帮助将不胜感激!
2条答案
按热度按时间vojdkbi01#
有一种更简单、更快速、更有效的方法可以将文件夹中的所有parquet文件读取到spark框架中,而不是循环遍历
dbutils.fs.ls()
返回的文件路径列表。如果你不需要递归,但需要所有的文件,只需:
https://spark.apache.org/docs/latest/sql-data-sources-generic-options.html#recursive-file-lookup
ncecgwcz2#
我不知道为什么但是如果你在union之后使用
.distinct()
,代码将工作: