天天看點

基于spark的Scala程式設計—DataFrame操作之filter和where

本文主要是寫關于Scala如何操作spark的DataFrame,本文先介紹filter的用法,詳細請看下面的步驟,以下所有的代碼都是在IntelliJ Idea裡面編寫并且遠端調試的。

先建立sparksession對象,代碼如下:

val conf = new SparkConf().setAppName("LzSparkDatasetExamples").setMaster("local")
    val sparkSession = SparkSession.builder().enableHiveSupport().config(conf).getOrCreate()
           

建立一個DataFrame對象并構造測試資料,代碼如下:

// 這裡一定要加這一行導入,否則toDF會報錯
    import sparkSession.implicits._
    val df = sparkSession.createDataset(Seq(
      ("aaa", 1, 2),
      ("bbb", 3, 4),
      ("ccc", 3, 5),
      ("bbb", 4, 6)
    )).toDF("key1", "key2", "key3")
           

filter用法如下代碼所示:

import org.apache.spark.sql.functions._
    // spark filter 用法
    LOGGER.info("------------df.filter($\"key1\" > \"aaa\").show----------")
    df.filter($"key1" > "aaa").show()
    LOGGER.info("------------df.filter($\"key1\" === \"aaa\").show----------")
    df.filter($"key1" === "aaa").show()
    LOGGER.info("------------df.filter($\"key2\" === $\"key3\"-1).show()----------")
    df.filter($"key2" === $"key3"-1).show()
    LOGGER.info("------------df.filter(\"key2=1\").show()----------")
    df.filter("key2=1").show()
    LOGGER.info("------------df.filter($\"key2\" =!= 1).show()----------")
    df.filter($"key2" =!= 1).show()
           

打包後運作結果如下所示:

基于spark的Scala程式設計—DataFrame操作之filter和where

where用法如下代碼所示:

// spark where 用法
    LOGGER.info("------------df.where($\"key1\" > \"aaa\").show----------")
    df.where($"key1" > "aaa").show()
    LOGGER.info("------------df.where($\"key1\" === \"aaa\").show----------")
    df.where($"key1" === "aaa").show()
    LOGGER.info("------------df.where($\"key2\" === $\"key3\"-1).show()----------")
    df.where($"key2" === $"key3"-1).show()
    LOGGER.info("------------df.where(\"key2=1\").show()----------")
    df.where("key2=1").show()
    LOGGER.info("------------df.where($\"key2\" =!= 1).show()----------")
    df.where($"key2" =!= 1).show()
           

打包後運作結果如下所示:

基于spark的Scala程式設計—DataFrame操作之filter和where