python - 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
有关完整用法,请参阅以下文档:
注意:请务必检查您正在使用的 spark 版本的文档
推荐阅读
- javascript - 对象作为 React 子对象无效(找到:带有键 {this} 的对象)。如果您打算渲染一组孩子,请改用数组
- c# - NLog GetCurrentClassLogger() 抛出 TypeInitializationException
- matlab - 当我对信号进行零填充时,为什么原始信号的 fft 和零填充信号不再围绕同一点连接?
- reactjs - 如何防止 keyup 事件冒泡到 MUI Snackbar?
- python - 如何在Python中循环时将数字添加到int
- java - 如何使用 Java/Spring Boot 代码从服务器下载和保存 Zip 文件?
- javascript - 在 localhost(无 Web 服务器)和服务器环境下按需加载/运行 JavaScript
- python - TensorFlow 对象检测 API 示例的高效数据管道
- android - 使用 volley 在正文中发布带有传递列表的请求
- spring - 未找到定义类。我究竟做错了什么?