项目实战从0到1之Spark(7)读写Redis数据
发布日期:2021-05-14 00:16:49 浏览次数:25 分类:博客文章

本文共 2625 字,大约阅读时间需要 8 分钟。

@������������������������������������

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������������

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 |+----+-----+---+

 

上一篇:项目实战从0到1之Spark(8)spark读取mongodb数据写入hive表中
下一篇:项目实战从0到1之Spark(6)Spark 读取mysql中的数据

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月12日 16时09分21秒