SparkSql系列(4/25) 删除列

50次阅读
没有评论

这个系列好久没更新了,一个字懒,两个字很懒。这篇比较简单,主要的 API 就是 drop 函数。

  val structureData = Seq(
    Row("James","","Smith","36636","NewYork",3100),
    Row("Michael","Rose","","40288","California",4300),
    Row("Robert","","Williams","42114","Florida",1400),
    Row("Maria","Anne","Jones","39192","Florida",5500),
    Row("Jen","Mary","Brown","34561","NewYork",3000)
  )

  val structureSchema = new StructType()
    .add("firstname",StringType)
    .add("middlename",StringType)
    .add("lastname",StringType)
    .add("id",StringType)
    .add("location",StringType)
    .add("salary",IntegerType)

  val df = spark.createDataFrame(
    spark.sparkContext.parallelize(structureData),structureSchema)
  df.printSchema()

说道 drop 这个 api ,我们先看下这个api 几个重载的形式

1) drop(colName : scala.Predef.String) : org.apache.spark.sql.DataFrame
2) drop(colNames : scala.Predef.String*) : org.apache.spark.sql.DataFrame
3) drop(col : org.apache.spark.sql.Column) : org.apache.spark.sql.DataFrame

第一个 api 你只要输入一个字符串 ,这个字符串表示的是dataframe的列名。 第二个与第一个之间的区别是是可以输入多个,这表示可以同时删除多列。 第三个 api 需要传入的参数是col

先给一个删除一列的例子:

val df2 = df.drop("firstname") //First signature
  df2.printSchema()

  df.drop(df("firstname")).printSchema()

  //import org.apache.spark.sql.functions.col is required
  df.drop(col("firstname")).printSchema() //Third signature

删除多列

//Refering more than one column
  df.drop("firstname","middlename","lastname")
    .printSchema()

  // using array/sequence of columns
  val cols = Seq("firstname","middlename","lastname")
  df.drop(cols:_*)
    .printSchema()
admin
版权声明:本文于2021-06-07转载自sparkbyexamples,共计1348字。
转载提示:此文章非本站原创文章,若需转载请联系原作者获得转载授权。
评论(没有评论)