Azure Databricks环境下pandas.read_parquet读取parquet文件报错咨询
问题解决方案
原因说明
你遇到的报错是pandas调用read_parquet方法时缺少必要的parquet解析引擎导致的,Azure Databricks默认环境没有预装pyarrow或fastparquet这两个pandas依赖的parquet解析库,同时也可能存在路径适配的问题,对应解决方法如下:
方案1:安装parquet解析依赖
单会话临时生效:
在当前notebook中新建cell运行以下命令,运行完成后按照提示重启内核即可:
%pip install pyarrow
集群全局生效:
- 进入对应Databricks集群的配置页,切换到「Libraries」标签
- 点击「Install new」按钮,选择安装源为PyPI
- 在包名输入框填写
pyarrow,点击安装后等待集群重启完成即可
方案2:适配Databricks文件路径规则
如果你读取的是DBFS或者挂载的ADLS等云上存储的parquet文件,需要使用正确的路径格式,两种可行的读取方式如下:
import pandas as pd # 方式1:通过DBFS Fuse路径直接读取(路径以/dbfs开头) df = pd.read_parquet("/dbfs/你存储parquet文件的完整路径/xxx.parquet") # 方式2:用Spark原生接口读取后转pandas(更推荐,性能更稳定) df = spark.read.parquet("dbfs:/你存储parquet文件的完整路径/xxx.parquet").toPandas()
功能验证
配置完成后可以运行以下测试代码确认功能正常:
import pandas as pd # 生成测试数据写入parquet test_data = pd.DataFrame({"id": [1,2,3], "value": ["test1", "test2", "test3"]}) test_data.to_parquet("/dbfs/tmp/test_parquet_demo.parquet") # 读取测试 read_result = pd.read_parquet("/dbfs/tmp/test_parquet_demo.parquet") print(read_result)
如果运行正常输出测试数据,说明问题已经解决。
内容的提问来源于stack exchange,提问作者mytabi
相关产品推荐
相关产品推荐

