在spark中,createtable命令是否创建外部表?

zmeyuzjn  于 2021-06-29  发布在  Hive
关注(0)|答案(2)|浏览(770)

基于github中的以下线程(https://github.com/databricks/spark-csv/issues/45)我知道createtable+选项(如jdbc)将创建一个hiveexternaltable?。这些类型的表本身不会具体化,因此当从databricks tables ui中删除或删除表时,不会丢失任何数据。

mi7gmzs6

mi7gmzs61#

来自spark 2.0文档:https://spark.apache.org/docs/2.3.1/sql-programming-guide.html#hive-表
在spark sql中:创建表。。。位置相当于创建外部表。。。位置,以防止意外删除用户提供的位置中的现有数据。这意味着,在sparksql中创建的具有用户指定位置的配置单元表始终是配置单元外部表。删除外部表不会删除数据。不允许用户为配置单元管理的表指定位置。请注意,这与Hive行为不同。

xyhw6mcr

xyhw6mcr2#

你完全可以创造一个 EXTERNAL spark中的表,但您必须注意使用 HiveContext 而不是 SqlContext :

scala> import org.apache.spark.sql.hive._
import org.apache.spark.sql.hive._

scala> val hc = new HiveContext(sc)
hc: org.apache.spark.sql.hive.HiveContext = org.apache.spark.sql.hive.HiveContext@385ff04e

scala> hc.sql("create external table blah ( name string ) location 'hdfs:///tmp/blah'")
res0: org.apache.spark.sql.DataFrame = [result: string]

相关问题