本文主要是寫關于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()
打包後運作結果如下所示:
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()
打包後運作結果如下所示: