3

基于 GitHub 中的以下线程(https://github.com/databricks/spark-csv/issues/45),我了解 CREATE TABLE + 选项(如 JDBC)会创建 Hive 外部表吗?这些类型的表不会自行实现,因此当通过 SQL 删除表或从 Databricks 表 UI 中删除表时,不会丢失任何数据。

4

2 回答 2

2

你可以很好地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]
于 2016-04-29T18:43:11.913 回答
1

来自 Spark 2.0 文档:https ://spark.apache.org/docs/2.3.1/sql-programming-guide.html#hive-tables

在 Spark SQL 中: CREATE TABLE ... LOCATION 等同于 CREATE EXTERNAL TABLE ... LOCATION 以防止意外删除用户提供的位置中的现有数据。这意味着,在 Spark SQL 中创建的具有用户指定位置的 Hive 表始终是 Hive 外部表。删除外部表不会删除数据。不允许用户指定 Hive 托管表的位置。请注意,这与 Hive 行为不同。

于 2019-06-24T20:15:50.520 回答