【问题标题】:How can I resolve "SparkException: Exception thrown in Future.get" issue?如何解决“SparkException:Future.get 中抛出的异常”问题?
【发布时间】:2019-06-21 20:40:26
【问题描述】:

我正在处理两个 pyspark 数据帧,并对它们进行左反连接以跟踪日常变化,然后发送电子邮件。
第一次尝试:

diff = Table_a.join(
    Table_b, 
    [Table_a.col1== Table_b.col1, Table_a.col2== Table_b.col2], 
    how='left_anti'
)

预期的输出是一个包含一些数据或没有数据的 pyspark 数据帧。

这个 diff 数据框从 Table_a 获取它的架构。 我第一次运行它时,没有按模式表示显示任何数据。下一次就抛出 SparkException:

Exception thrown in Future.get

【问题讨论】:

  • 我遇到了同样的问题。我的用例是我使用looker 来构建BI 模型,而looker 会将我的模型转换为spark-sql。在某些情况下,查询失败并出现错误The Apache Spark 2.0 database encountered an error while running this query. org.apache.spark.SparkException: Exception thrown in Future.get:

标签: python pyspark databricks azure-databricks


【解决方案1】:

我使用 Scala,但根据我的经验,当其中一个基础表以某种方式发生更改时,就会发生这种情况。我的建议是尝试简单地运行 display(Table_a)display(Table_b),看看这些命令是否失败。这应该会提示您问题出在哪里。

无论如何,为了有效解决问题,我的建议是清除运行中的缓存

%sql
REFRESH my_schema.table_a
REFRESH my_schema.table_b

然后,重新定义这些变量,如

Table_a = spark.table("my_schema.table_a")
Table_b = spark.table("my_schema.table_b")

这对我有用 - 希望它也可以帮助你。

【讨论】:

    【解决方案2】:

    谢谢@Lucas Lima。每次创建新表时,我都会在 pyspark 中使用以下命令清除缓存:

    table_a.cache()
    

    希望信息有所帮助。

    【讨论】:

    • @Anasta_Sia 不应该是table_a.uncache() 而不是table_a.cache()
    【解决方案3】:

    我遇到了类似的问题。问题的根本原因是数据类型不匹配。 在保存数据时,我的列之一的数据类型为 IntegerType,当我加载相同的数据时,我在架构中提供了不正确的数据类型,因此它引发了异常。
    这不会立即引发任何异常,直到您对加载的数据调用 show()count 等数据的任何操作。

    错误截图:

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 2021-01-23
      • 1970-01-01
      • 2019-10-10
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多