Scala中DataFrame查询,合并多列(使用数组列表等不定列查询)

1.通过数组,列表select()方法

2.合并表中部分指定多列

3.删除多列

没啥好说,代码如下: 

object Demo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Demo").setMaster("local")
    val sparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()
    sparkSession.sparkContext.setLogLevel("ERROR")
    val frame = sparkSession.read
      .option("header", value = true)
      .option("delimiter", "\t")
      .option("inferschema", value = true)
      .csv("coupon_test_data.tsv")
    //需要查询的列名集合
    val names = frame.schema.fieldNames
    import org.apache.spark.sql.functions.col
    //直接查询所有集合列元素
    frame.select(names.map(key => col(key)): _*).show(5)
    val newCols = Array("user_id", "site_id")
    //合并所有user_id,site_id列生成一个新列(newColumn),每个元素间以"-"隔开
    frame.withColumn("newColumn", concat_ws("-", newCols.map(key => col(key)): _*))
      //可以生成新列后将被合并的两列删除
      .drop(newCols: _*)
      .show(5)
    sparkSession.stop()
  }
}

 这是查询多列,上述代码中的names列数据截图

这是合并指定多列生成列兵删除被合并列的数据截图 


版权声明:本文为You_are_my_Mr_Right原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。