作者:ngdongran_638070 | 来源:互联网 | 2023-09-17 22:59
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列数据截图
这是合并指定多列生成列兵删除被合并列的数据截图