首页 > 解决方案 > PySpark:从 dir 读取多个 .xlsx 文件并合并到一个 spark 数据帧

问题描述

我正在尝试将特定目录中的所有 .xlsx 文件放入一个 PySpark 数据框中。

我想出了什么:

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))

标签: pythondataframeapache-sparkpyspark

解决方案


@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 版本的文档


推荐阅读