卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

nosql的應(yīng)用場(chǎng)景 科普Spark,Spark是什么,如何使用Spark?

科普Spark,Spark是什么,如何使用Spark?自己寫的Spark入門實(shí)戰(zhàn)教程,適合于有一定hadoop和數(shù)據(jù)分析經(jīng)驗(yàn)的朋友。Spark簡(jiǎn)介Spark是一個(gè)開源的計(jì)算框架平臺(tái),使用該平臺(tái),數(shù)據(jù)分

科普Spark,Spark是什么,如何使用Spark?

自己寫的Spark入門實(shí)戰(zhàn)教程,適合于有一定hadoop和數(shù)據(jù)分析經(jīng)驗(yàn)的朋友。

Spark簡(jiǎn)介

Spark是一個(gè)開源的計(jì)算框架平臺(tái),使用該平臺(tái),數(shù)據(jù)分析程序可自動(dòng)分發(fā)到集群中的不同機(jī)器中,以解決大規(guī)模數(shù)據(jù)快速計(jì)算的問題,同時(shí)它還向上提供一個(gè)優(yōu)雅的編程范式,使得數(shù)據(jù)分析人員通過編寫類似于本機(jī)的數(shù)據(jù)分析程序即可實(shí)現(xiàn)集群并行計(jì)算。

Spark項(xiàng)目由多個(gè)緊密集成的組件組成。核心是Spark Core組件

,它實(shí)現(xiàn)了Spark的基本功能,包括:任務(wù)調(diào)度、內(nèi)存管理、錯(cuò)誤恢復(fù)、與存儲(chǔ)系統(tǒng)交互等模塊,特別的,Spark Core還定義了彈性分布式數(shù)據(jù)集(RDD)的API,是Spark內(nèi)存計(jì)算與并行計(jì)算的主要編程抽象。

在Spark Core上有一系列軟件棧,用于滿足了各種不同數(shù)據(jù)分析計(jì)算任務(wù)需求,包括連接關(guān)系型數(shù)據(jù)庫(kù)或Hadoop Hive的SQL/HQL的查詢組件Spark SQL,對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件Spark Steaming,支持常見機(jī)器學(xué)習(xí)算法并行計(jì)算組件MLlib,支持并行圖計(jì)算組件GraphX等。

為了進(jìn)一步支持在數(shù)千個(gè)計(jì)算節(jié)點(diǎn)上的伸縮計(jì)算,Spark Core底層支持在各種集群管理器上運(yùn)行,包括Hadoop YARN、Apache Mesos,或者Spark自帶的Standalone獨(dú)立調(diào)度器。

Spark部署

安裝Spark比較簡(jiǎn)單,只要在機(jī)器上配置好最新版JAVA環(huán)境,下載編譯好的Spark軟件包后即可在本地運(yùn)行。當(dāng)然,也可以根據(jù)具體環(huán)境,使用Maven編譯需要的Spark功能。

Spark部署有兩種,一是本地部署,二是集群部署。前者只需啟動(dòng)本地的交互式環(huán)境腳本即可,常用在本機(jī)快速程序測(cè)試,后者的應(yīng)用場(chǎng)景更多些,具體根據(jù)集群環(huán)境不同,可部署在簡(jiǎn)易的Spark獨(dú)立調(diào)度集群上、部署在Hadoop YARN集群上、或部署在Apache Mesos上等。

其中,Spark自帶的獨(dú)立調(diào)度器是最簡(jiǎn)單實(shí)現(xiàn)Spark集群環(huán)境的一種,只需在多網(wǎng)計(jì)算機(jī)上安裝好Spark,然后在其中一臺(tái)啟動(dòng)集群管理器(通過腳本),然后再在其他計(jì)算機(jī)上啟動(dòng)工作節(jié)點(diǎn)(通過腳本),并連接到管理器上即可。

Spark編程

使用Spark編程,需要先在本機(jī)安裝好Spark環(huán)境,然后啟動(dòng)Spark上下文管理器連接到本機(jī)(本地部署)或是集群上的集群管理器(集群部署),再使用Spark提供的抽象接口編程即可。

支持Spark的原生語言是Scala,一種支持JVM的腳本語言,可以避免其他語言在做數(shù)據(jù)轉(zhuǎn)化過程的性能或信息丟失。但隨著Spark項(xiàng)目的不斷完善,使用Python和PySpark包、或者R和SparkR包進(jìn)行Spark編程也都是不錯(cuò)的選擇。

不論使用何種編程語言,使用Spark進(jìn)行數(shù)據(jù)分析的關(guān)鍵在于掌握Spark抽象的編程范式,其基本流程包括4步:

初始化SparkContext

。SparkContext即是Spark上下文管理器(也稱為驅(qū)動(dòng)器程序),它主要負(fù)責(zé)向Spark工作節(jié)點(diǎn)上發(fā)送指令并獲得計(jì)算結(jié)果,但數(shù)據(jù)分析人員無需關(guān)注具體細(xì)節(jié),只需使用SparkContext接口編程即可。

創(chuàng)建RDD

。彈性分布數(shù)據(jù)集RDD是Spark在多機(jī)進(jìn)行并行計(jì)算的核心數(shù)據(jù)結(jié)構(gòu),因此使用Spark進(jìn)行數(shù)據(jù)分析,首先需使用SparkContext將外部數(shù)據(jù)讀入到Spark集群內(nèi)。

設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)化操作

。即操作的結(jié)果是返回一個(gè)新的RDD,即在圖計(jì)算中只是一個(gè)中間節(jié)點(diǎn)。類比于Hadoop的Map()映射算子,但又不僅于此,Spark還支持filter()過濾算子、distinct()去重算子、sample()采樣算子,以及多個(gè)RDD集合的交差補(bǔ)并等集合操作。

設(shè)計(jì)數(shù)據(jù)執(zhí)行操作

。即操作的結(jié)果向SparkContext返回結(jié)果,或者將結(jié)果寫入外部操作系統(tǒng)。類比于Hadoop的Reduce()算子,按某函數(shù)操作兩個(gè)數(shù)據(jù)并返回一個(gè)同類型的數(shù)據(jù),此外Spark還支持collect()直接返回結(jié)果算子、count()計(jì)數(shù)算子、take()/top()返回部分?jǐn)?shù)據(jù)算子、foreach()迭代計(jì)算算子等操作。

Spark編程范式的本質(zhì)是有向無環(huán)圖的惰性計(jì)算

,即當(dāng)使用上述進(jìn)行編程后,Spark將自動(dòng)將上述RDD和轉(zhuǎn)化算子轉(zhuǎn)換為有向無環(huán)圖的數(shù)據(jù)工作流,只有當(dāng)觸發(fā)執(zhí)行算子時(shí),才按需進(jìn)行數(shù)據(jù)工作流的計(jì)算。此外,為進(jìn)一步提高計(jì)算效率,Spark默認(rèn)將在內(nèi)存中執(zhí)行,并自動(dòng)進(jìn)行內(nèi)存分配管理,當(dāng)然分析人員也可根據(jù)需求通過persist()算子將中間步驟數(shù)據(jù)顯式的將內(nèi)存數(shù)據(jù)持久化到磁盤中,以方便調(diào)試或復(fù)用。

在R環(huán)境下使用Spark實(shí)例

最新版的RStudio已經(jīng)較完整的集成了Spark數(shù)據(jù)分析功能,可以在SparkR官方擴(kuò)展接口基礎(chǔ)上更方便的使用Spark,主要需要安裝兩個(gè)包,分別是sparklyr和dplyr。其中,sparklyr包提供了更簡(jiǎn)潔易用的Spark R編程接口,dplyr包提供了一個(gè)語法可擴(kuò)展的數(shù)據(jù)操作接口,支持與主流SQL/NoSQL數(shù)據(jù)庫(kù)連接,同時(shí)使數(shù)據(jù)操作與數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)解耦合,并且和Spark原生算子可基本對(duì)應(yīng)。

若第一次運(yùn)行,先在本機(jī)安裝必要的包和Spark環(huán)境:

之后運(yùn)行下面的小例子,可以發(fā)現(xiàn),除了需要初始化SparkContext、導(dǎo)入RDD數(shù)據(jù)和導(dǎo)出數(shù)據(jù)外,其他數(shù)據(jù)處理操作都與在本機(jī)做數(shù)據(jù)分析是一樣的。

此外,除了dplyr接口外,sparklyr還封裝了一套特征工程和常用機(jī)器學(xué)習(xí)算法,足以滿足80%常見的數(shù)據(jù)分析與挖掘工作,至于剩余的20%定制算法或是流處理、圖計(jì)算等任務(wù),便需要了解更多高階的Spark接口來實(shí)現(xiàn)了。

spring boot使用shiro還是secuitry好?

應(yīng)該是Spring Security。眾所周知,Spring Boot/Spring Cloud 是 Java 開發(fā)中最主流的技術(shù)棧,而在 Spring Boot/Spring Cloud 中做安全管理,Spring Security 一定是最方便的;這樣,如果要保護(hù) Spring Boot 中的接口,添加一個(gè) Spring Security 的dependency,差不多就沒問題了,所有接口也就保護(hù)起來了(這幾乎不需要任何一行配置,就能搞定)。

拿microservice的場(chǎng)景舉例,如果你想用 Shiro 代替 Spring Security,無疑 Shiro 的代碼量會(huì)非??植?,而反觀Spring Security 則可以非常容易的集成到 Spring Boot/Spring Cloud 技術(shù)棧中,可以和 Spring Boot、Spring Cloud、Spring Social、WebSocket 等非常方便的整合。