azure - 在databricks中创建数据框时获取 "error while emitting; method too large"

标签 azure apache-spark databricks azure-databricks

我正在函数中创建一个数据帧并返回该数据帧

def getDataFrame(rdd: RDD[MyCaseClass]) = {
    spark.createDataFrame(rdd)
  }

包含此函数的文件编译时没有任何错误。在另一个文件中运行它时会抛出错误:

%run "./Load_Dataframe"

The execution of this command did not finish successfully

import java.util.Properties
import org.apache.spark.rdd.RDD
defined class MyCaseClass
error: Error while emitting $$$cbf4485eb7852af86a790a85973a466$$$$w$STHierarchy$$typecreator1$1
Method too large: $$$cbf4485eb7852af86a790a85973a466$$$$w$STHierarchy$$typecreator1$1.apply (Lscala/reflect/api/Mirror;)Lscala/reflect/api/Types$TypeApi;

网上的大多数解决方案都告诉我们将函数分成多个更小的函数。但我的函数只有一行代码,不知道如何将其分成多个函数。

最佳答案

我问过这个问题。以下是我为解决此问题所采取的步骤。我不知道此问题的根本原因,我只知道这些解决方法有效:

  1. 分离并重新附加集群。这可以解决 80% 的问题。
  2. 重新启动集群,然后重试。
  3. 你的文件中有一个非常大的类,如果你把它分成多个类会更好。
  4. 您的文件中有一个巨大的函数。将该函数分解为多个较小的函数。

就我而言,我有一个很大的类(class),我将其分为两个类(class),它解决了我的问题。

关于azure - 在databricks中创建数据框时获取 "error while emitting; method too large",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67758691/

相关文章:

azure - 如何使用 azure cli 保持登录状态?

apache-spark - Spark 与 AWS S3 连接错误 : Not able to read file from S3 location through spark-shell

sql - 如何将值插入到sql数据 block 中的数组和映射中?

logging - 在 PySpark 中禁用 INFO 日志记录

r - R 中数据 block 中的 SQL 雪花查询

azure - 安装 azure-cosmos-spark maven 库时,Databricks 作业被取消

azure - 创建新的 Azure Function App 时,在什么情况下应选择 Windows 以外的操作系统?

powershell - 如何使用凭据通过代理服务器运行 Azure powershell cmdlet?

azure - 无法通过 Bicep 部署具有生命周期管理规则的 Azure 存储帐户

java - 将数据集写入组合 xls 文件