使用PySpark从ADLS装载将大型Excel文件加载到数据块中

q5lcpyga  于 2023-02-09  发布在  Apache
关注(0)|答案(1)|浏览(214)

我们正在尝试使用Databricks上的pyspark从安装的Azure数据湖位置加载一个较大的Excel文件。
我们使用pyspark.pandas加载,也使用spark-excel加载,但都不太成功

PySpark.Pandas
import pyspark.pandas as ps
df = ps.read_excel("dbfs:/mnt/aadata/ds/data/test.xlsx",engine="openpyxl")

我们遇到一些转换错误,如下所示

ArrowTypeError: Expected bytes, got a 'int' object
Spark-excel
df=spark.read.format("com.crealytics.spark.excel") \
        .option("header", "true") \
        .option("inferSchema","false") \
        .load('dbfs:/mnt/aadata/ds/data/test.xlsx')

我们可以加载较小的文件,但较大的文件会出现以下错误

org.apache.poi.util.RecordFormatException: Tried to allocate an array of length 185,568,653, but the maximum length for this record type is 100,000,000.

有没有其他方法可以用pyspark加载数据库中的excel文件?

nfs0ujit

nfs0ujit1#

在你的Excel文件中,可能有某种奇怪的格式,或者某种特殊的字符,使它无法工作。将Excel文件保存为CSV文件,然后重试。你应该可以很容易地加载CSV文件,因为它没有任何奇怪的东西,而Excel有各种奇怪的东西嵌入其中。

相关问题