我运行了一个计划的过程,该过程使用sparkSQL在Hive中查询表并进行一些转换,然后对数据集中的行进行计数:
val dataset = this.query_hive(sql_statement)
val result_interm = this.transformation_step1(dataset)
val result = this.transformation_step2(result_interm)
println(result.count())
我遇到的问题是Hive中的表,该表的更新频率很高,并且每当Spark作业运行时对其进行更新时,我都会从Spark收到Spark java.io.FileNotFoundException, invalidate the cache in Spark by running REFRESH TABLE table
错误消息。我的问题:有什么办法可以防止这种情况发生?
答案 0 :(得分:2)
您可以尝试以下选项:
REFRESH TABLE
。try-finally
代码部分,您将在其中模拟某种重试逻辑。MANAGED
表的表,然后创建另一个EXTERNAL
表,该表将指向{ {1}}表,通过这种方式,它可以读取旧值并且不会压在MANAGED
希望这会有所帮助。