如何在 Databricks 中读取批量 excel 文件数据并加载到 spark 数据框中

Posted

技术标签:

【中文标题】如何在 Databricks 中读取批量 excel 文件数据并加载到 spark 数据框中【英文标题】:How to read bulk excel file data and load into spark dataframe in Databricks 【发布时间】:2019-06-04 15:34:39 【问题描述】:

我想读取包含 80 万条记录和 230 列的批量 Excel 数据。我已经使用 spark 和 pandas dataframe 读取数据,但是在使用 spark 数据帧读取数据时,我收到以下消息。

消息:火花驱动器已意外停止并正在重新启动。您的笔记本将自动重新附加。

我使用 spark 使用了下面的代码。

df=spark.read.format("com.crealytics.spark.excel").option("useheader","true").option("treatEmptyValuesAsNulls","true").option("inferSchema", "true").option("addColorColumns", "False").option("location","/dbfs/FileStore/test/abc.xlsx").load()

Using scala:

import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf, SparkContext
import org.apache.spark.sql.DataFrame
def readExcel(file: String): DataFrame = sqlContext.read
   .format("com.crealytics.spark.excel")
   .option("location", file)
   .option("useHeader", "true")
   .option("treatEmptyValuesAsNulls", "true")
   .option("inferSchema", "true")
   .option("addColorColumns", "False")
   .load()

val data = readExcel("/dbfs/test/abc.xlsx")
data.show(false)

【问题讨论】:

【参考方案1】:

您可以做的两件事是增加集群上的内存或使用 excel 库中的 max rows in memory 选项来帮助流式传输一定数量的数据:

.option("maxRowsInMemory", 20)

【讨论】:

以上是关于如何在 Databricks 中读取批量 excel 文件数据并加载到 spark 数据框中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Databricks 使用服务原理通过 spark 数据框将批量数据插入 Sql Server 数据仓库

如何在 Databricks 中迭代以读取存储在数据湖不同子目录中的数百个文件?

如何在 Azure Databricks 中使用 JDBC 从 PostgreSQL 读取表数据?

通过 Python 中的 Databricks api 读取 Databricks 表?

如何将压缩的 TSV 文件读取到 Databricks 上的数据框?

如何修复从 cosmos db 中的 databricks scala 读取流中的“错误:未找到:键入 CosmosDBSourceProvider”