以字符串形式获取配置单元表的列名

trnvg8h3  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(369)

我正在尝试以逗号分隔的字符串获取配置单元表的列名。这就是我要做的

val colNameDF = spark.sql("show columns in hive_table")
val colNameStr = colNameDF.select("col_name").collect.mkString(", ")

我得到的结果是

res0: String = [col_1], [col_2], [col_3]

但我想要的是 col_1, col_2, col_3 . 我可以移除 [ 以及 ] 但是我很好奇我们是否能得到没有括号的列名。
编辑:配置单元表中的列名不包含[]

ckocjqey

ckocjqey1#

而不是 show columns ,尝试下面的方法,因为它比你的更快。

val colNameDF = spark.sql("select * from hive_table").limit(0)

val colNameDF = spark.table("hive_table").limit(0)
val colNameStr = colNameDF.columns.mkString(", ")
bkhjykvo

bkhjykvo2#

collect返回给您一个 Row 特别是在内部表示为值数组,因此需要像这样对其进行欺骗:

val colNameDF = spark.sql("show columns in hive_table")
val colNameStr = colNameDF.select("col_name").collect.map(r=>r.getString(0)).mkString(", ")

相关问题