Scala / Spark определяют путь к внешней таблице - PullRequest
1 голос
/ 08 марта 2019

У меня есть одна внешняя таблица в gs bucket, и для выполнения логики сжатия я хочу определить полный путь, по которому создается таблица.

val tableName="stock_ticks_cow_part"
val primaryKey="key"
val versionPartition="version"
val datePartition="dt"
val datePartitionCol=new org.apache.spark.sql.ColumnName(datePartition)

import spark.implicits._

val compactionTable = spark.table(tableName).withColumnRenamed(versionPartition, "compaction_version").withColumnRenamed(datePartition, "date_key")
compactionTable. <code for determining the path>

Дайте мне знать, если кто-нибудь знает, какопределить путь к таблице в Scala.

Ответы [ 3 ]

3 голосов
/ 08 марта 2019

Я думаю, вы можете использовать .inputFiles до

Возвращает лучший моментальный снимок файлов, которые составляют этот набор данных

Имейте в виду, что это возвращает Array[String], поэтому вы должны просмотреть его, чтобы получить всю информацию, которую вы ищете.

Так что на самом деле просто позвоните

compactionTable.inputFiles

и посмотрите на каждый элемент массива

0 голосов
/ 07 мая 2019

Вот правильный ответ:


import org.apache.spark.sql.catalyst.TableIdentifier
lazy val tblMetadata = catalog.getTableMetadata(new TableIdentifier(tableName,Some(schema)))

lazy val s3location: String = tblMetadata.location.getPath
0 голосов
/ 08 марта 2019

Вы можете использовать команды SQL SHOW CREATE TABLE <tablename> или DESCRIBE FORMATTED <tablename>.Оба должны вернуть location внешней таблицы, но им нужна некоторая логика для извлечения этого пути ...

См. Также Как получить значение местоположения для таблицы Hive, используя Sparkобъект

...