Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala/Spark确定外部表的路径_Scala_Apache Spark_Spark Shell - Fatal编程技术网

Scala/Spark确定外部表的路径

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

我在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>
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]