基于github中的以下线程(https://github.com/databricks/spark-csv/issues/45)我知道createtable+选项(如jdbc)将创建一个hiveexternaltable?。这些类型的表本身不会具体化,因此当从databricks tables ui中删除或删除表时,不会丢失任何数据。
mi7gmzs61#
来自spark 2.0文档:https://spark.apache.org/docs/2.3.1/sql-programming-guide.html#hive-表在spark sql中:创建表。。。位置相当于创建外部表。。。位置,以防止意外删除用户提供的位置中的现有数据。这意味着,在sparksql中创建的具有用户指定位置的配置单元表始终是配置单元外部表。删除外部表不会删除数据。不允许用户为配置单元管理的表指定位置。请注意,这与Hive行为不同。
xyhw6mcr2#
你完全可以创造一个 EXTERNAL spark中的表,但您必须注意使用 HiveContext 而不是 SqlContext :
EXTERNAL
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]
2条答案
按热度按时间mi7gmzs61#
来自spark 2.0文档:https://spark.apache.org/docs/2.3.1/sql-programming-guide.html#hive-表
在spark sql中:创建表。。。位置相当于创建外部表。。。位置,以防止意外删除用户提供的位置中的现有数据。这意味着,在sparksql中创建的具有用户指定位置的配置单元表始终是配置单元外部表。删除外部表不会删除数据。不允许用户为配置单元管理的表指定位置。请注意,这与Hive行为不同。
xyhw6mcr2#
你完全可以创造一个
EXTERNAL
spark中的表,但您必须注意使用HiveContext
而不是SqlContext
: