本篇內(nèi)容主要講解“如何使用spark-redis組件訪問(wèn)云數(shù)據(jù)庫(kù)Redis”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何使用spark-redis組件訪問(wèn)云數(shù)據(jù)庫(kù)Redis”吧!
成都創(chuàng)新互聯(lián)基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)達(dá)州電信機(jī)房,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
我們以EMR-3.21.0版本和Redis 4.0為例。EMR集群安裝的Spark版本是2.4.3,我們需要使用對(duì)應(yīng)的Spark-Redis 2.4版本,該組件可以支持Redis 2.9.0以上版本。
EMR和Redis需要在同一個(gè)VPC網(wǎng)絡(luò)中創(chuàng)建,同時(shí),在云數(shù)據(jù)庫(kù)Redis實(shí)例啟動(dòng)之后,需要在“白名單設(shè)置”中添加EMR集群IP地址(參考Redis快速入門文檔,https://help.aliyun.com/document_detail/107043.html)。
接下去,我們登錄EMR Master節(jié)點(diǎn)啟動(dòng)Spark Shell。如果Master節(jié)點(diǎn)可以連接外網(wǎng),可以使用package方式加載spark-redis相關(guān)jar包:
spark-shell --packages com.redislabs:spark-redis:2.4.0 \ --conf spark.redis.host=hostname \ --conf spark.redis.port=6379 \ --conf spark.redis.auth=password
spark.redis.host等參數(shù)可以在命令行指定,也可以配置在 spark-defaults.conf 中,也可以在代碼中指定。其中:
spark.redis.host:Redis內(nèi)網(wǎng)連接地址
spark.redis.port:Redis服務(wù)端口號(hào)
spark.redis.auth:創(chuàng)建Redis實(shí)例時(shí)指定的密碼
也可以通過(guò)--jars的方式指定依賴的jar包:
spark-shell --jars spark-redis-2.4.0.jar,jedis-3.1.0-m1.jar,commons-pool2-2.0.jar \ --conf spark.redis.host=hostname \ --conf spark.redis.port=6379 \ --conf spark.redis.auth=password
scala> import com.redislabs.provider.redis._
import com.redislabs.provider.redis._
scala> val data = Array(("key1", "v1"), ("key2", "world"), ("key3", "hello"), ("key4", "Hong"), ("key5", "Kong"))
data: Array[(String, String)] = Array((key1,v1), (key2,world), (key3,hello), (key4,Hong), (key5,Kong))
scala> val distData = sc.parallelize(data)
distData: org.apache.spark.rdd.RDD[(String, String)] = ParallelCollectionRDD[0] at parallelize at <console>:29
scala> sc.toRedisKV(distData)
scala> val stringRDD = sc.fromRedisKV("key*").map{ kv => kv._2 }
stringRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at map at <console>:27
scala> val values = stringRDD.collect()
values: Array[String] = Array(world, hello, v1, Kong, Hong)
scala> println(values.mkString(","))
world,hello,v1,Kong,Hong
scala> case class Person(name: String, age: Int)
defined class Person
scala> val personSeq = Seq(Person("John", 30), Person("Peter", 45))
personSeq: Seq[Person] = List(Person(John,30), Person(Peter,45))
scala> val df = spark.createDataFrame(personSeq)
df: org.apache.spark.sql.DataFrame = [name: string, age: int]
scala> df.write.format("org.apache.spark.sql.redis").option("table", "person").save()
到此,相信大家對(duì)“如何使用spark-redis組件訪問(wèn)云數(shù)據(jù)庫(kù)Redis”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章標(biāo)題:如何使用spark-redis組件訪問(wèn)云數(shù)據(jù)庫(kù)Redis
網(wǎng)頁(yè)路徑:http://jinyejixie.com/article46/jjehhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、、網(wǎng)站收錄、Google、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)