МЕСТОПОЛОЖЕНИЕ отличается от пути при сохранении таблицы с ячейками из Spark в Hive

#apache-spark #hive #apache-spark-sql #bucket

Вопрос:

Как уже упоминалось в названии, я пытаюсь сохранить таблицу с ячейками и сортировкой в Spark с указанным путем.

 base.write.option("path","/database/hdfs/test")
.bucketBy(16, "key").sortBy("value").mode("overwrite").format("parquet")
.saveAsTable("db.bucketing")
 

Но я заметил, что «МЕСТОПОЛОЖЕНИЕ» таблицы-улья установлено в путь к хранилищу по умолчанию с временной папкой с именем <db_location>-<db_location><имя_таблицы> — _<имя_таблицы>ЗАПОЛНИТЕЛЬ_, но не путь, который я определил.

Я получил это, когда показывал ТАБЛИЦУ СОЗДАНИЯ в УЛЬЕ :

  ---------------------------------------------------- 
| CREATE EXTERNAL TABLE `db.bucketing`(    |
|   `col` array<string> COMMENT 'from deserializer') |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'  |
| WITH SERDEPROPERTIES (                             |
|   'path'='hdfs://database/hdfs/test')  |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.mapred.SequenceFileInputFormat'  |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat' |
| LOCATION                                           |
|   'hdfs://database/hdfs/warehouse/tablespace/external/hive/db.db/bucketing-__PLACEHOLDER__' |
| TBLPROPERTIES (                                    |
|   'OBJCAPABILITIES'='SPARKSQL',                    |
|   'bucketing_version'='2',                         |
|   'spark.sql.create.version'='2.3.2.3.1.5.0-152',  |
|   'spark.sql.sources.provider'='parquet',          |
|   'spark.sql.sources.schema.bucketCol.0'='key',    |
|   'spark.sql.sources.schema.numBucketCols'='1',    |
|   'spark.sql.sources.schema.numBuckets'='16',      |
|   'spark.sql.sources.schema.numParts'='1',         |
|   'spark.sql.sources.schema.numSortCols'='1',      |
|   'spark.sql.sources.schema.part.0'='{"type":"struct","fields":[{"name":"key","type":"long","nullable":true,"metadata":{}},{"name":"value","type":"double","nullable":true,"metadata":{}}]}',  |
|   'spark.sql.sources.schema.sortCol.0'='value',    |
|   'transient_lastDdlTime'='1637545413')            |
 ---------------------------------------------------- 
 

Кто-нибудь может сказать мне, почему я получил «МЕСТОПОЛОЖЕНИЕ», отличное от «пути»? и как я мог это исправить ?
Спасибо