Создает ли команда CREATE TABLE внешнюю таблицу в Spark?

На основе следующей ветки в GitHub (https://github.com/databricks/spark-csv/issues/45) Я понимаю, что CREATE TABLE + Options (например, JDBC) создаст внешнюю таблицу Hive ?. Таблицы этого типа не материализуются сами по себе, и, следовательно, данные не теряются, когда таблица отбрасывается в SQL или удаляется из пользовательского интерфейса таблиц Databricks.


person jmdev    schedule 28.04.2016    source источник


Ответы (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]
person Roberto Congiu    schedule 29.04.2016

Из документации 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, чтобы предотвратить случайное удаление существующих данных в указанных пользователем местах. Это означает, что таблица Hive, созданная в Spark SQL с указанным пользователем расположением, всегда является внешней таблицей Hive. Удаление внешних таблиц не приведет к удалению данных. Пользователям не разрешено указывать расположение для управляемых таблиц Hive. Обратите внимание, что это отличается от поведения Hive.

person Paul Bendevis    schedule 24.06.2019