Scala/Spark确定外部路径table
Scala/Spark determine the path of external table
我在 gs 存储桶上有一个外部 table 并执行一些压缩逻辑,我想确定创建 table 的完整路径。
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 中确定 table 路径,请告诉我。
我想你可以使用 .inputFiles
到
Returns a best-effort snapshot of the files that compose this Dataset
请注意,此 returns 是一个 Array[String]
,因此您应该遍历它以获取您要查找的所有信息。
所以实际上只需调用
compactionTable.inputFiles
并查看数组的每个元素
您可以使用 SQL 命令 SHOW CREATE TABLE <tablename>
或 DESCRIBE FORMATTED <tablename>
。两者都应该 return 外部 table 的 location
,但他们需要一些逻辑来提取此路径...
另见
正确答案如下:
import org.apache.spark.sql.catalyst.TableIdentifier
lazy val tblMetadata = catalog.getTableMetadata(new TableIdentifier(tableName,Some(schema)))
lazy val s3location: String = tblMetadata.location.getPath
使用DESCRIBE FORMATTED
SQL命令收集回驱动程序的路径。
在 Scala 中:
val location = spark.sql("DESCRIBE FORMATTED table_name").filter("col_name = 'Location'").select("data_type").head().getString(0)
同Python:
location = spark.sql("DESCRIBE FORMATTED table_name").filter("col_name = 'Location'").select("data_type").head()[0]
我在 gs 存储桶上有一个外部 table 并执行一些压缩逻辑,我想确定创建 table 的完整路径。
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 中确定 table 路径,请告诉我。
我想你可以使用 .inputFiles
到
Returns a best-effort snapshot of the files that compose this Dataset
请注意,此 returns 是一个 Array[String]
,因此您应该遍历它以获取您要查找的所有信息。
所以实际上只需调用
compactionTable.inputFiles
并查看数组的每个元素
您可以使用 SQL 命令 SHOW CREATE TABLE <tablename>
或 DESCRIBE FORMATTED <tablename>
。两者都应该 return 外部 table 的 location
,但他们需要一些逻辑来提取此路径...
另见
正确答案如下:
import org.apache.spark.sql.catalyst.TableIdentifier
lazy val tblMetadata = catalog.getTableMetadata(new TableIdentifier(tableName,Some(schema)))
lazy val s3location: String = tblMetadata.location.getPath
使用DESCRIBE FORMATTED
SQL命令收集回驱动程序的路径。
在 Scala 中:
val location = spark.sql("DESCRIBE FORMATTED table_name").filter("col_name = 'Location'").select("data_type").head().getString(0)
同Python:
location = spark.sql("DESCRIBE FORMATTED table_name").filter("col_name = 'Location'").select("data_type").head()[0]