PySpark:从dir中读取多个.xlsx文件并合并到一个spark数据帧



我正在尝试从特定目录中获取所有.xlsx文件到一个PySpark数据帧。

  • 所有.xlsx文件的模式是相同的

我想到的:

directory = os.listdir('/Users/UserName/Documents/excel/')
pattern = '(.*.xlsx)'
for file in directory:
if re.match(pattern, file): # get only .xlsx files
pdf1 = pandas.read_excel(file, sheet_name='Analog Voltage Input') #pandas data frame
pdf2 = pandas.read_excel(next(file), sheet_name='Analog Voltage Input')
sdf1 = spark.createDataFrame(pdf1) #spark data frame
sdf2 = spark.createDataFrame(pdf2)
msdf = sdf1.union(sdf2) #merged spark data frame

我知道循环中的部分不工作有几个原因,但我希望你能明白。

我正在寻找一个函数,如:

msdf.append(spark.createDataFrame(file))

@Felix Bartschi,pyspark(和scala)支持将csv文件直接读取到spark数据框架中。你可以像

df = spark.read.csv('root/folder1/folder2') # folder 2 will contain all your files

参考下面的文档了解完整用法:

https://spark.apache.org/docs/2.4.0/api/python/pyspark.sql.html?highlight=csv pyspark.sql.DataFrameReader.csv

注意:请务必检查您正在使用的spark版本的文档