如何解决“ SparkException:Future.get中引发的异常”问题?

时间:2019-06-21 20:40:26

标签: python pyspark databricks azure-databricks

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

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

预期输出是一个不包含任何数据的pyspark数据框。

此差异数据帧从Table_a获取其架构。 我第一次运行它时,没有显示与模式表示相同的数据。下次再抛出SparkException:

Exception thrown in Future.get

3 个答案:

答案 0 :(得分:3)

我使用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")

这对我有用-希望它也对您有帮助。

答案 1 :(得分:0)

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

    class changeDrinkTypeInterface: WKInterfaceController {

    @IBOutlet weak var drinkPicker: WKInterfacePicker!
    @IBOutlet weak var ConfirmNewDrink: WKInterfaceButton!

    var itemList: [(String, String)] = [
        ("Item 1", "Coffee"),
        ("Item 2", "Energy Drink"),
        ("Item 3", "Water"),
        ("Item 4", "Soft Drink")
    ]

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        let pickerItems: [WKPickerItem] = itemList.map {
            let pickerItem = WKPickerItem()
            pickerItem.caption = $0.0
            pickerItem.title = $0.1
            return pickerItem
        }

        self.drinkPicker.setItems(pickerItems)
    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        // Configure interface objects here.
        super.willActivate()
    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }
}

希望信息会有所帮助。

答案 2 :(得分:0)

我是类似类型的问题。问题的根本原因是数据类型不匹配。 当时保存数据时,我的列之一的数据类型为IntegerType,而当我加载相同的数据时,我在架构中提供了错误的数据类型,因此引发了异常。
除非您对已加载的数据调用诸如 show() count 之类的数据的任何操作,否则不会立即引发任何异常。

错误屏幕截图:
Error Screenshot