hive 在Spark中创建一个外部表而不移动数据文件

whitzsjs  于 8个月前  发布在  Hive
关注(0)|答案(1)|浏览(75)

我有几个外部文件,我想在不移动这些文件的情况下创建表。这些都在ORC。
这就是我正在做的

val df = spark.read.option("inferSchema",true).orc("abc_file_path")
df.show() -- this works fine and shows the schema and record

df.write.option("path", "abc_file_path").saveAsTable("xyz.abc")

写操作抛出关于文件在abc_file_path中不存在的错误。它看起来像文件被删除,以及在此操作过程中。它还发出了这样的警告:

  • 基础文件可能已更新。您可以通过在SQL中运行“REFRESH TABLE tableName”命令或重新创建所涉及的Dataset/DataFrame来显式地使Spark中的该高速缓存无效。*
ig9co6j1

ig9co6j11#

是的,这是预期的行为,因为你是阅读数据从abc_file_path和写入相同的路径没有任何写模式。
即使你指定写模式,它也会覆盖该位置的现有文件或数据,在spark3.5.0版本中测试过。
下面是git代码-https://github.com/apache/spark/blob/branch-3.5/sql/core/src/main/scala/org/apache/spark/sql/DataFrameWriter.scala

相关问题