如何使用Spark获取配置单元分区列名称

时间:2018-07-26 14:10:21

标签: apache-spark hive

我在蜂巢中有一个表,其DDL如下所示。

创建表ABC(   def foo() puts "First_name: " first_name = gets.chomp puts puts "You are #{first_name}. Is info correct? [y/n]" true_false = gets.chomp if true_false == "y" puts puts "Good!" puts puts "ENTERING STAGE~2" first_name else true_false == "n" puts "Please correct the information." #jump: puts "First name: " foo() end end puts "ENTERING STAGE~1" puts first_name = foo() puts puts "Last name: " last_name = gets.chomp puts puts "You are #{first_name} #{last_name}." 字符串) 被(   foo()字符串,   String.format bigint,   name字符串,   col1字符串)

我有一个要求,我必须使用Spark Scala将Hive表的非分区列名称存储到变量1中,并将分区列名称存储到变量2中。

所需的输出为:

col2

我正在遵循以下方法,但无法获得相同的结果。

col3

您能帮我解决吗?

2 个答案:

答案 0 :(得分:0)

尝试一下:

val df=sql("show partitions default.ABC")

您可以获得“分区”列。然后收集想要的东西。

如果要创建表分区,可以使用spark-sql execute

show create table tableName

您可以获得数据集的'createtab_stmt'列。

答案 1 :(得分:0)

尝试:

import org.apache.spark.sql.functions._
val partitionsColumns = spark.catalog.listColumns("wikicc").where(col("ispartition") === true).select("name").collect().map(_.getAs[String]("name"))
val noParitionsColumns = spark.catalog.listColumns("wikicc").where(col("ispartition") === false).select("name").collect().map(_.getAs[String]("name"))
println(partitionsColumns.mkString(","))
println(noParitionsColumns.mkString(","))