gpt4 book ai didi

apache-spark - 什么时候在 spark 中执行 REFRESH TABLE my_table?

转载 作者:行者123 更新时间:2023-12-04 21:04:43 43 4
gpt4 key购买 nike

考虑一个代码;

 import org.apache.spark.sql.hive.orc._
import org.apache.spark.sql._

val path = ...
val dataFrame:DataFramew = ...

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sparkContext)
dataFrame.createOrReplaceTempView("my_table")
val results = hiveContext.sql(s"select * from my_table")
results.write.mode(SaveMode.Append).partitionBy("my_column").format("orc").save(path)
hiveContext.sql("REFRESH TABLE my_table")

此代码使用相同的路径但不同的数据帧执行两次。第一次运行成功,但随后出现错误:
Caused by: java.io.FileNotFoundException: File does not exist: hdfs://somepath/somefile.snappy.orc
It is possible the underlying files have been updated. You can explicitly invalidate the cache in Spark by running 'REFRESH TABLE tableName' command in SQL or by recreating the Dataset/DataFrame involved.

我试图清理缓存,调用 hiveContext.dropTempTable("tableName")并且都没有效果。何时调用 REFRESH TABLE tableName之前,之后(其他变体)修复此类错误?

最佳答案

您可以运行 spark.catalog.refreshTable(tableName)spark.sql(s"REFRESH TABLE $tableName")就在写操作之前。我有同样的问题,它解决了我的问题。

spark.catalog.refreshTable(tableName)
df.write.mode(SaveMode.Overwrite).insertInto(tableName)

关于apache-spark - 什么时候在 spark 中执行 REFRESH TABLE my_table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234471/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com