Я больше не могу сохранить таблицу в базе данных улья, используя metastore.Я вижу таблицы в spark, используя spark.sql
, но я не могу увидеть те же таблицы в базе данных улья.Я попробовал это, но он не хранит таблицу для улья.Как я могу настроить улей метастор?Версия Spark 2.3.1.
Если вы хотите получить более подробную информацию, пожалуйста, прокомментируйте.
%spark
import org.apache.spark.sql.SparkSession
val spark = (SparkSession
.builder
.appName("interfacing spark sql to hive metastore without configuration file")
.config("hive.metastore.uris", "thrift://xxxxxx.xxx:9083") // replace with your hivemetastore service's thrift url
.enableHiveSupport() // don't forget to enable hive support
.getOrCreate())
spark.conf.get("spark.sql.warehouse.dir")// Output: res2: String = /apps/spark/warehouse
spark.conf.get("hive.metastore.warehouse.dir")// NotSuchElement Exception
spark.conf.get("spark.hadoop.hive.metastore.uris")// NotSuchElement Exception
var df = (spark
.read
.format("parquet")
.load(dataPath)
df.createOrReplaceTempView("my_temp_table");
spark.sql("drop table if exists my_table");
spark.sql("create table my_table using hive as select * from my_temp_table");
spark.sql("show tables").show(false)// I see my_table in default database
Обновление после ответа @catpaws: HDP 3.0 и более поздние версии, Hive и Spark используют независимые каталоги
СохранитьТаблица для каталога свечей:
df.createOrReplaceTempView("my_temp_table");
spark.sql("create table my_table as select * from my_temp_table");
VS
Сохранить таблицу в каталоге кустов:
val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(spark).build()
hive.createTable("newTable")
.ifNotExists()
.column("ws_sold_time_sk", "bigint")
...// x 200 columns
.column("ws_ship_date_sk", "bigint")
.create()
df.write.format(HIVE_WAREHOUSE_CONNECTOR)
.option("table", "newTable")
.save()
Как вы видите в этомСпособ Hive Warehouse Connector очень непрактичен для информационных фреймов с сотнями столбцов.Есть ли способ сохранить большие кадры данных в Hive?