Apache spark 始终获取java.io.FileNotFoundException并要求';刷新表tableName';查询配置单元和转换数据时
我运行了一个计划进程,该进程使用sparkSQL查询配置单元中的表,并进行一些转换,然后计算数据集中的行数:Apache spark 始终获取java.io.FileNotFoundException并要求';刷新表tableName';查询配置单元和转换数据时,apache-spark,Apache Spark,我运行了一个计划进程,该进程使用sparkSQL查询配置单元中的表,并进行一些转换,然后计算数据集中的行数: val dataset = this.query_hive(sql_statement) val result_interm = this.transformation_step1(dataset) val result = this.transformation_step2(result_interm) println(result.count()) 我遇到
val dataset = this.query_hive(sql_statement)
val result_interm = this.transformation_step1(dataset)
val result = this.transformation_step2(result_interm)
println(result.count())
我遇到的问题是配置单元中的表,它更新得相当频繁,每当它在spark作业运行时更新时,我都会得到
spark java.io.FileNotFoundException,通过运行spark发出的刷新表表错误消息,使spark中的缓存无效。我的问题:有什么方法可以防止这种情况发生吗?您可以尝试以下选项:
在使用某些转换之前,立即运行刷新表
编写一些try finally
code部分,在那里您将模拟某种重试逻辑
实际上,第三个选项我无法测试,但您可以尝试创建经常更新为托管
表的表,然后创建另一个外部
表,该表将指向托管
表的位置,通过这种方式,它可以读取旧的值,而不会挤压java.io.FileNotFoundException
希望这能有所帮助。您可以尝试以下选项:
在使用某些转换之前,立即运行刷新表
编写一些try finally
code部分,在那里您将模拟某种重试逻辑
实际上,第三个选项我无法测试,但您可以尝试创建经常更新为托管
表的表,然后创建另一个外部
表,该表将指向托管
表的位置,通过这种方式,它可以读取旧的值,而不会挤压java.io.FileNotFoundException
希望这能有所帮助