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