【问题标题】:Pandas missing read_parquet function in Azure Databricks NotebookPandas 在 Azure Databricks Notebook 中缺少 read_parquet 函数
【发布时间】:2019-11-21 22:48:42
【问题描述】:

当我在 databricks notebook 中使用 pandas 读取 parquet 文件时,会发生以下错误:AttributeError: module 'pandas' has no attribute 'read_parquet'。尝试在我的集群上安装最新版本的熊猫,但仍然没有变化。关于如何修复它的任何想法?

【问题讨论】:

    标签: python pandas azure databricks azure-databricks


    【解决方案1】:

    要在 Azure Databricks 笔记本中读取 parquet 格式文件,您应该直接使用类 pyspark.sql.DataFrameReader 来将数据加载为 PySpark 数据框,而不是使用 pandas

    这里是代码示例。

    df = spark.read.format("parquet").load('<the path of your parquet file>')
    

    df = spark.read.parquet('<the path of your parquet file>')
    

    如果你想从 PySpark 数据帧中获取 pandas 数据帧,可以使用下面 PySpark 数据帧的函数toPandas()

    pdf = df.toPandas()
    

    更新:我通过下面的代码检查了默认 Azure databricks 笔记本中的pandas 版本,我发现它是0.19.2

    所以你必须升级pandas的版本大于等于0.21.x,这是第一个支持read_parquet功能的版本,如下图pandas/io/parquet.py

    要升级你的databricks集群中的pandas,请按照databricks官方文档Databricks UtilitiesLibrary utilities部分安装不同版本的pandas包,代码和图如下。

    dbutils.library.installPyPI("pandas", version="0.24.2")
    dbutils.library.restartPython()
    

    那么就可以按照pandas官方文档所说的使用read_parquet函数了。

    【讨论】:

    • 现在我使用 pyspark,但是使用 pyspark 摄取然后将数据转换为 pandas 数据帧的问题是它需要的时间太长,比如 100M 行需要超过 30 分钟。我只是想用pandas测试直接读取parquet,看看这样会不会减少时间。
    • @zzzk 我已经更新了我的帖子。如果有帮助,请帮我将其标记为答案。
    • 您知道如何卸载 pandas 库吗?如您所示更新库后,存在多个 numpy 库导致我的集群无法启动的问题。
    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多