【问题标题】:Azure Databricks OOM error that causes the connection to the Python REPL to be closedAzure Databricks OOM 错误导致与 Python REPL 的连接关闭
【发布时间】:2022-01-27 11:46:17
【问题描述】:

在下面的示例代码中,在我们的Azure Databricks 笔记本的one cell 中,代码将大约2000 万条记录从Azure SQL db 加载到Python pandas dataframe,通过应用一些函数进行一些数据帧列转换(如下面的代码sn-p所示)。但是在运行代码大约半小时后,Databricks 抛出以下错误:

错误

ConnectException: Connection refused (Connection refused)
Error while obtaining a new communication channel
ConnectException error: This is often caused by an OOM error that causes the connection to the Python REPL to be closed. Check your query's memory usage.

备注:表格大约有 150 列。 Databricks 上的Spark setting 如下: 集群128 GB , 16 Cores, DBR 8.3, Spark 8.3, Scala 2.12

问题:错误的原因可能是什么,我们该如何解决?

import sqlalchemy as sq
import pandas as pd

def fn_myFunction(lastname):
    testvar = lastname.lower()
    testvar = testvar.strip()
    
    return testvar

pw = dbutils.secrets.get(scope='SomeScope',key='sql')
engine = sq.create_engine('mssql+pymssql://SERVICE.Databricks.NONPUBLICETL:'+pw+'MyAzureSQL.database.windows.net:1433/TEST', isolation_level="AUTOCOMMIT")

app_df = pd.read_sql('select * from MyTable', con=engine)

#create new column
app_df['NewColumn'] = app_df['TestColumn'].apply(lambda x: fn_myFunction(x))
.............
.............

【问题讨论】:

    标签: python pandas apache-spark azure-sql-database azure-databricks


    【解决方案1】:

    这意味着驱动程序由于 OOM(内存不足)异常而崩溃,之后无法与驱动程序建立新连接。

    请尝试以下选项

    • 尝试增加驱动程序端内存,然后重试。
    • 您可以查看 spark 作业 dag,它为您提供有关数据流的更多信息。

    如需了解更多信息,请关注 Aditi Sinha 的 article

    【讨论】:

      【解决方案2】:

      首先我们可以了解驱动节点出现OOM问题的最常见原因。

      此错误的一个常见原因是驱动程序遇到内存瓶颈。发生这种情况时,驱动程序会因内存不足 (OOM) 情况而崩溃,并且由于频繁的完整垃圾回收而重新启动或变得无响应。内存瓶颈的原因可以是以下任何一种:

      • 驱动程序实例类型对于在 司机。
      • 在驱动程序上执行了内存密集型操作。
      • 有许多笔记本或作业在同一台机器上并行运行 集群。

      为什么会发生这种情况?

      当我们通过Pandas 处理任何数据集时,在单个机器(驱动程序节点)上运行操作,而不像 PySpark 在多台机器上运行。 如果你正在处理更大的数据集,通过 python pandas,无论集群有多大。因此,您可以增加驱动节点的内存大小或以分布式模式处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多