Scala/Spark确定外部表的路径
我在gs bucket上有一个外部表,为了进行一些压缩逻辑,我想确定创建表的完整路径Scala/Spark确定外部表的路径,scala,apache-spark,spark-shell,Scala,Apache Spark,Spark Shell,我在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 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>
val tableName=“库存、滴答声、奶牛、零件”
val primaryKey=“key”
val versionPartition=“version”
val datePartition=“dt”
val datePartitionCol=new org.apache.spark.sql.ColumnName(datePartition)
导入spark.implicits_
val compactionTable=spark.table(tableName).withColumn重命名(versionPartition,“compression\u version”)。withColumn重命名(datePartition,“date\u key”)
压缩表<用于确定路径的代码>
如果有人知道如何在scala中确定表路径,请告诉我。我想您可以使用
返回组成此数据集的文件的尽力快照
请注意,这将返回一个数组[String]
,因此您应该循环遍历它以获取所需的所有信息
所以实际上只要打电话就行了
compactionTable.inputFiles
看看数组中的每个元素,我想你可以用
返回组成此数据集的文件的尽力快照
请注意,这将返回一个数组[String]
,因此您应该循环遍历它以获取所需的所有信息
所以实际上只要打电话就行了
compactionTable.inputFiles
然后查看数组的每个元素您可以使用SQL命令
显示创建表
或描述格式化的
。两者都应该返回外部表的位置
,但它们需要一些逻辑来提取此路径
另请参见您可以使用SQL命令
SHOW CREATE TABLE
或descripe FORMATTED
。两者都应该返回外部表的位置
,但它们需要一些逻辑来提取此路径
另请参见以下正确答案:
导入org.apache.spark.sql.catalyst.TableIdentifier
lazy val tblMetadata=catalog.getTableMetadata(新的TableIdentifier(tableName,一些(模式)))
lazy val s3location:String=tblMetadata.location.getPath
以下是正确答案:
导入org.apache.spark.sql.catalyst.TableIdentifier
lazy val tblMetadata=catalog.getTableMetadata(新的TableIdentifier(tableName,一些(模式)))
lazy val s3location:String=tblMetadata.location.getPath
使用描述格式化的
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]
使用
descripe 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]