Spark讀寫Redis資料

Spark2。0 讀寫Redis資料(scala)——redis5。0。3

特別強調樓主使用spark2.3.2版本,redis5.0.3版本

1。準備工作

pom.xml

檔案中要新增

com。redislabs spark-redis 2。3。1-RC1

2。程式碼

import org。apache。spark。sql。types。{IntegerType,StringType,StructField,StructType}import org。apache。spark。sql。{SaveMode, SparkSession}object SparkReadRedis { case class Person(name: String, age: Int) def main(args: Array[String]): Unit = { val spark = SparkSession。builder() 。appName(“SparkReadRedis”) 。master(“local[*]”) 。config(“spark。redis。host”,“10。101。12。104”) 。config(“spark。redis。port”, “6379”) 。config(“spark。redis。auth”,“aaron227”) //指定redis密碼 。config(“spark。redis。db”,“0”) //指定redis庫 。getOrCreate() // 將資料寫入到redis中 val personSeq = Seq(Person(“Aaron”, 30), Person(“Peter”, 45)) val df = spark。createDataFrame(personSeq) df。write 。format(“org。apache。spark。sql。redis”) 。option(“table”, “person”) 。option(“key。column”, “name”) 。mode(SaveMode。Overwrite) 。save() // 從redis中讀取資料————方法一 val loadedDf = spark。read 。format(“org。apache。spark。sql。redis”) 。option(“table”, “person”) 。option(“key。column”, “name”) 。load() loadedDf。show(false) // 從redis中讀取資料————方法二 spark。sql( s“”“ |CREATE TEMPORARY VIEW person |(name STRING, age INT,address STRING, salary DOUBLE) |USING org。apache。spark。sql。redis |OPTIONS (table ‘person’,key。column ”name“)”“”。stripMargin) val loadedDf2 = spark。sql(s“SELECT * FROM person”) loadedDf2。show(false) // 從redis中讀取資料————方法三 val loadedDf3 = spark。read 。format(“org。apache。spark。sql。redis”) 。schema(StructType(Array(StructField(“id”, IntegerType), StructField(“name”, StringType), StructField(“age”, IntegerType)))) 。option(“keys。pattern”, “person:*”) 。option(“key。column”, “name”) 。load() loadedDf3。show(false) spark。stop() }}

3。結果檢驗

a。 檢查寫入是否成功,查詢redis結果如下

Spark讀寫Redis資料

b。 檢查讀取是否成功,控制檯列印結果展示

+——-+——-+|name |age|+——-+——-+|Peter|45 ||Aaron|30 |+——-+——-++——-+——-+————-+————+|name |age|address|salary|+——-+——-+————-+————+|Peter|45 |null |null ||Aaron|30 |null |null |+——-+——-+————-+————++——+——-+——-+|id |name |age|+——+——-+——-+|null|Peter|45 ||null|Aaron|30 |+——+——-+——-+