亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)處理方法和裝置與流程

文檔序號(hào):11620569閱讀:172來(lái)源:國(guó)知局
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種數(shù)據(jù)處理方法和裝置。
背景技術(shù)
::隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,電子設(shè)備的普及,越來(lái)越多的用戶使用網(wǎng)絡(luò),為此產(chǎn)生了大量的數(shù)據(jù),為了快速?gòu)暮A繑?shù)據(jù)中獲得真正的業(yè)務(wù)價(jià)值,需要構(gòu)建一種性能高的數(shù)據(jù)分析應(yīng)用系統(tǒng)。spark是一種基于內(nèi)存的迭代處理框架,它具有高吞吐量和強(qiáng)容錯(cuò)性的特點(diǎn),由于其內(nèi)部?jī)?yōu)秀的調(diào)度機(jī)制、快速的分布式計(jì)算能力,能夠用極快的速度進(jìn)行迭代計(jì)算,在某些特定業(yè)務(wù)可以實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)的分析處理。但是,spark在對(duì)數(shù)據(jù)進(jìn)行處理時(shí),如果源數(shù)據(jù)保存在磁盤(pán)上,需要從磁盤(pán)加載數(shù)據(jù),耗時(shí)較長(zhǎng)。技術(shù)實(shí)現(xiàn)要素:基于此,有必要針對(duì)spark從磁盤(pán)加載數(shù)據(jù)耗時(shí)長(zhǎng)的問(wèn)題,提供一種數(shù)據(jù)處理方法,能提高加載數(shù)據(jù)的效率。此外,還有必要提供一種數(shù)據(jù)處理裝置,能提高加載數(shù)據(jù)的效率。一種數(shù)據(jù)處理方法,包括以下步驟:對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將所述內(nèi)存分布式文件系統(tǒng)及所述spark集群進(jìn)行關(guān)聯(lián);啟動(dòng)所述spark集群,并對(duì)所述spark集群初始化;從所述內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù);對(duì)所述源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù);將所述預(yù)處理后的數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果;將所述數(shù)據(jù)分析結(jié)果存儲(chǔ)到所述內(nèi)存分布式文件系統(tǒng)中。在其中一個(gè)實(shí)施例中,還包括:當(dāng)spark出現(xiàn)故障時(shí),重啟spark,從所述內(nèi)存分布式文件系統(tǒng)中讀取緩存 的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果。在其中一個(gè)實(shí)施例中,所述對(duì)所述源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)的步驟包括:將所述源數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的數(shù)據(jù);將所述預(yù)定格式的數(shù)據(jù)進(jìn)行過(guò)濾;將過(guò)濾后的數(shù)據(jù)注冊(cè)成具有相同結(jié)構(gòu)模式的臨時(shí)表;所述將所述預(yù)處理后的數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果的步驟包括:通過(guò)sql將所述臨時(shí)表映射的框架數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。在其中一個(gè)實(shí)施例中,對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將所述內(nèi)存分布式文件系統(tǒng)及所述spark集群進(jìn)行關(guān)聯(lián)的步驟包括:指定內(nèi)存分布式文件系統(tǒng)底層使用的文件系統(tǒng)及文件系統(tǒng)的實(shí)現(xiàn)類;設(shè)置內(nèi)存分布式文件系統(tǒng)的主節(jié)點(diǎn)的ip、訪問(wèn)端口及緩存路徑,內(nèi)存分布式文件系統(tǒng)的從節(jié)點(diǎn)的端口、數(shù)據(jù)服務(wù)端口和數(shù)據(jù)存儲(chǔ)路徑;指定spark集群?jiǎn)?dòng)參數(shù),指定內(nèi)存分布式文件系統(tǒng)所依賴包路徑,配置內(nèi)存文件系統(tǒng)運(yùn)行在底層使用的文件系統(tǒng)之上以及內(nèi)存文件系統(tǒng)的容錯(cuò)功能;對(duì)所述spark集群初始化的步驟包括:初始化上下文全局對(duì)象;初始化執(zhí)行類型。在其中一個(gè)實(shí)施例中,在啟動(dòng)所述spark集群,并對(duì)所述spark集群初始化的步驟之后,所述數(shù)據(jù)處理方法還包括:接收數(shù)據(jù);對(duì)所述數(shù)據(jù)進(jìn)行處理得到源數(shù)據(jù);將所述源數(shù)據(jù)存入內(nèi)存分布式文件系統(tǒng)。一種數(shù)據(jù)處理裝置,包括:配置模塊,用于對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將所述內(nèi)存分布式文件系統(tǒng)及所述spark集群進(jìn)行關(guān)聯(lián);初始化模塊,用于啟動(dòng)所述spark集群,并對(duì)所述spark集群初始化;讀取模塊,用于從所述內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù);預(yù)處理模塊,用于對(duì)所述源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù);分析模塊,用于將所述預(yù)處理后的數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果;存儲(chǔ)模塊,用于將所述數(shù)據(jù)分析結(jié)果存儲(chǔ)到所述內(nèi)存分布式文件系統(tǒng)中。在其中一個(gè)實(shí)施例中,所述讀取模塊還用于當(dāng)spark出現(xiàn)故障時(shí),重啟spark,從內(nèi)存分布式文件系統(tǒng)中讀取緩存的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果。在其中一個(gè)實(shí)施例中,所述預(yù)處理模塊包括:轉(zhuǎn)換單元,用于將所述源數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的數(shù)據(jù);過(guò)濾單元,用于將所述預(yù)定格式的數(shù)據(jù)進(jìn)行過(guò)濾;注冊(cè)單元,用于將過(guò)濾后的數(shù)據(jù)注冊(cè)成具有相同結(jié)構(gòu)模式的臨時(shí)表;所述分析模塊還用于通過(guò)sql將所述臨時(shí)表映射的框架數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。在其中一個(gè)實(shí)施例中,所述配置模塊還用于指定內(nèi)存分布式文件系統(tǒng)底層使用的文件系統(tǒng)及文件系統(tǒng)的實(shí)現(xiàn)類;設(shè)置內(nèi)存分布式文件系統(tǒng)的主節(jié)點(diǎn)的ip、訪問(wèn)端口和緩存路徑,及設(shè)置內(nèi)存分布式文件系統(tǒng)的從節(jié)點(diǎn)的端口、數(shù)據(jù)服務(wù)端口和數(shù)據(jù)存儲(chǔ)路徑;以及指定spark集群?jiǎn)?dòng)參數(shù),指定內(nèi)存分布式文件系統(tǒng)所依賴包路徑,配置內(nèi)存文件系統(tǒng)運(yùn)行在底層使用的文件系統(tǒng)之上以及內(nèi)存文件系統(tǒng)的容錯(cuò)功能;所述初始化模塊還用于初始化上下文全局對(duì)象,以及初始化執(zhí)行類型。在其中一個(gè)實(shí)施例中,所述數(shù)據(jù)處理裝置還包括:接收模塊,用于在初始化模塊啟動(dòng)所述spark集群,并對(duì)所述spark集群初始化之后,接收數(shù)據(jù);處理模塊,用于對(duì)所述數(shù)據(jù)進(jìn)行處理得到源數(shù)據(jù);所述存儲(chǔ)模塊還用于將所述源數(shù)據(jù)存入所述內(nèi)存分布式文件系統(tǒng)。上述數(shù)據(jù)處理方法和裝置,通過(guò)將內(nèi)存分布式文件系統(tǒng)與spark集群進(jìn)行關(guān)聯(lián),基于spark分析數(shù)據(jù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),對(duì)源數(shù)據(jù)進(jìn)行預(yù)處理后進(jìn)行分析得到數(shù)據(jù)分析結(jié)果,并將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,因spark執(zhí)行任務(wù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),為外部讀取設(shè)備提供內(nèi)存級(jí)速度的跨集群文件共享服務(wù),提高了數(shù)據(jù)讀取效率,且 該內(nèi)存分布式文件系統(tǒng)將數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理分隔開(kāi),減少了數(shù)據(jù)處理中垃圾回收次數(shù)和時(shí)間,提高了數(shù)據(jù)處理效率。附圖說(shuō)明圖1為一個(gè)實(shí)施例中數(shù)據(jù)處理方法的流程圖;圖2為一個(gè)實(shí)施例中對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)的具體流程圖;圖3為一個(gè)實(shí)施例中對(duì)該源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)的具體流程圖;圖4為另一個(gè)實(shí)施例中數(shù)據(jù)處理方法的流程圖;圖5為一個(gè)實(shí)施例中數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;圖6為一個(gè)實(shí)施例中預(yù)處理模塊的內(nèi)部結(jié)構(gòu)框圖;圖7為另一個(gè)實(shí)施例中數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖1為一個(gè)實(shí)施例中數(shù)據(jù)處理方法的流程圖。如圖1所示,一種數(shù)據(jù)處理方法,包括以下步驟102至步驟112:步驟102,對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)。具體地,內(nèi)存分布式文件系統(tǒng)是一種基于堆外內(nèi)存的分布式存儲(chǔ)。堆外內(nèi)存把數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理分隔開(kāi),數(shù)據(jù)存放在處理邏輯的jvm(javavirtualmachine,虛擬機(jī))堆空間之外,從而減少數(shù)據(jù)處理中jvm的垃圾回收次數(shù)和時(shí)間,提高數(shù)據(jù)處理效率。因?yàn)槊恳淮蔚膄ullgc都需要對(duì)數(shù)據(jù)進(jìn)行一個(gè)全局掃描,非常耗費(fèi)時(shí)間,同時(shí)隨著處理時(shí)間和迭代次數(shù)的增加,gc的開(kāi)銷會(huì)變得越來(lái)越大。由于數(shù)據(jù)存儲(chǔ)在內(nèi)存分布式文件系統(tǒng)中,當(dāng)處理邏輯讀取數(shù)據(jù)時(shí),避 免了磁盤(pán)io(input/output,輸入/輸出)的開(kāi)銷,讀取效率大幅上升。內(nèi)存分布式文件系統(tǒng)可為tachyon。將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)是指將內(nèi)存分布式文件系統(tǒng)與spark集群產(chǎn)生聯(lián)系。圖2為一個(gè)實(shí)施例中對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)的具體流程圖。如圖2所示,以內(nèi)存分布式文件系統(tǒng)為tachyon為例,對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)的步驟包括步驟202至步驟206:步驟202,指定內(nèi)存分布式文件系統(tǒng)底層使用的文件系統(tǒng)及文件系統(tǒng)的實(shí)現(xiàn)類。具體地,指定tachyon底層使用的文件系統(tǒng)及文件系統(tǒng)的實(shí)現(xiàn)類。指定tachyon底層使用的文件系統(tǒng)為hadoop分布式文件系統(tǒng),其實(shí)現(xiàn)類為org.apache.hadoop.hdfs.distributedfilesystem,指定其在文件系統(tǒng)中的相關(guān)存儲(chǔ)路徑,設(shè)置是否使用zookeeper來(lái)進(jìn)行master容錯(cuò)。hadoop分布式文件系統(tǒng),是一個(gè)容錯(cuò)性高,擴(kuò)展性強(qiáng)的適合pb級(jí)數(shù)據(jù)存儲(chǔ)的系統(tǒng)。它在磁盤(pán)上默認(rèn)存儲(chǔ)了三份數(shù)據(jù),而上層的tachyon僅需保存一份和hadoop分布式文件系統(tǒng)中的數(shù)據(jù)一致的數(shù)據(jù)到內(nèi)存中即可,這樣使得寶貴的內(nèi)存資源得到最大化的利用。只有內(nèi)存中沒(méi)有處理程序所需的數(shù)據(jù)時(shí),tachyon才會(huì)從hadoop分布式文件系統(tǒng)中加載;而如果tachyon的某個(gè)節(jié)點(diǎn)沒(méi)有數(shù)據(jù)時(shí),它可以通過(guò)網(wǎng)絡(luò)從其他tachyon節(jié)點(diǎn)讀取沒(méi)有磁盤(pán)io只有網(wǎng)絡(luò)開(kāi)銷的數(shù)據(jù)。步驟204,設(shè)置內(nèi)存分布式文件系統(tǒng)的主節(jié)點(diǎn)的ip、訪問(wèn)端口及緩存路徑,內(nèi)存分布式文件系統(tǒng)的從節(jié)點(diǎn)的端口、數(shù)據(jù)服務(wù)端口和數(shù)據(jù)存儲(chǔ)路徑。具體地,指定tachyon的主節(jié)點(diǎn)的ip(internetprotocol,網(wǎng)際協(xié)議)地址、訪問(wèn)端口及緩存路徑。指定tachyon的從節(jié)點(diǎn)的端口、數(shù)據(jù)服務(wù)端口、數(shù)據(jù)存儲(chǔ)路徑以及內(nèi)存容量大小等。內(nèi)存分布式文件系統(tǒng)配置完成后,第一次啟動(dòng)前先格式化數(shù)據(jù)存儲(chǔ)目錄,再啟動(dòng)內(nèi)存分布式文件系統(tǒng)(tachyon)。步驟206,指定spark集群?jiǎn)?dòng)參數(shù),指定內(nèi)存分布式文件系統(tǒng)所依賴包路徑,配置內(nèi)存文件系統(tǒng)運(yùn)行在底層使用的文件系統(tǒng)之上以及內(nèi)存文件系統(tǒng)的容 錯(cuò)功能。在${spark_home}/conf/spark-env.sh中設(shè)置程序啟動(dòng)必選參數(shù):master:指定spark集群的連接地址spark_master_ip:指定spark集群主節(jié)點(diǎn)機(jī)器主機(jī)名spark_master_port:指定spark集群主節(jié)點(diǎn)機(jī)器端口號(hào)spark_worker_cores:指定任務(wù)執(zhí)行時(shí)需要使用的cpu個(gè)數(shù)spark_executor_memory:指定任務(wù)執(zhí)行時(shí)需要使用的內(nèi)存spark_local_ip:指定執(zhí)行任務(wù)的機(jī)器ip地址spark_classpath:指定tachyon依賴包路徑在${spark_home}/conf/core-site.xml中配置:fs.tachyon.impl→tachyon.hadoop.tfs:配置tachyon運(yùn)行在hadoop上面。fs.tachyon-ft.impl→tachyon.hadoop.tfsft:配置tachyon的容錯(cuò)功能。步驟104,啟動(dòng)該spark集群,并對(duì)該spark集群初始化。本實(shí)施例中,對(duì)該spark集群初始化的步驟包括:初始化上下文全局對(duì)象;初始化執(zhí)行類型。具體地,初始化spark上下文全局對(duì)象:javasparkcontextjsc=newjavasparkcontext(newsparkconf().setmaster("spark://localhost:7077").setappname("例子"));初始化執(zhí)行類型:hivecontexthivecontext=newhivecontext(jsc.sc())。步驟106,從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù)。具體地,spark集群所需的數(shù)據(jù)存儲(chǔ)在內(nèi)存分布式文件系統(tǒng)中。tachyon將spark需要的數(shù)據(jù)存儲(chǔ)在自己的文件系統(tǒng)中,通過(guò)使用lineage記錄源數(shù)據(jù)和計(jì)算過(guò)程,對(duì)數(shù)據(jù)進(jìn)行l(wèi)ineage容錯(cuò)。從tachyon中讀取源數(shù)據(jù):dataframedf1=hivecontext.read().json("tachyon://localhost:19998/demo");步驟108,對(duì)該源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)。圖3為一個(gè)實(shí)施例中對(duì)該源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)的具體 流程圖。如圖3所示,對(duì)該源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)的步驟包括步驟302至306:步驟302,將該源數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的數(shù)據(jù)。本實(shí)施例中,預(yù)定格式可為json格式,則將源數(shù)據(jù)按行轉(zhuǎn)換成一個(gè)json字符串返回。步驟304,將該預(yù)定格式的數(shù)據(jù)進(jìn)行過(guò)濾。本實(shí)施例中,將json格式的數(shù)據(jù)進(jìn)行過(guò)濾。步驟306,將過(guò)濾后的數(shù)據(jù)注冊(cè)成具有相同結(jié)構(gòu)模式的臨時(shí)表。本實(shí)施例中,過(guò)濾后的數(shù)據(jù)存放在dataframe中。因dataframe中存放的數(shù)據(jù)格式是一致的,把dataframe注冊(cè)成一個(gè)具有相同結(jié)構(gòu)模式的臨時(shí)表:df2.registertemptable("demo")。步驟110,將該預(yù)處理后的數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。本實(shí)施例中,通過(guò)sql(structuredquerylanguage,結(jié)構(gòu)化查詢語(yǔ)言)將該臨時(shí)表映射的框架數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。dataframedemo=hivecontext.sql("selectcount(*)fromdemo")步驟112,將該數(shù)據(jù)分析結(jié)果存儲(chǔ)到該內(nèi)存分布式文件系統(tǒng)中。本實(shí)施例中,將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,可采用兩種方式。第一種是將數(shù)據(jù)分析結(jié)果中的數(shù)據(jù)轉(zhuǎn)化為文本存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中。例如,內(nèi)存分布式文件系統(tǒng)為tachyon,數(shù)據(jù)分析結(jié)果為rdd,則:demo.javardd().saveastextfile("tachyon://localhost:19998/result")。第二種是將數(shù)據(jù)分析結(jié)果直接保存到內(nèi)存分布式文件系統(tǒng)中。例如,內(nèi)存分布式文件系統(tǒng)為tachyon,數(shù)據(jù)分析結(jié)果為rdd,則:demo.javardd().persist(storagelevel.off_heap())。上述數(shù)據(jù)處理方法,通過(guò)將內(nèi)存分布式文件系統(tǒng)與spark集群進(jìn)行關(guān)聯(lián),基于spark分析數(shù)據(jù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),對(duì)源數(shù)據(jù)進(jìn)行預(yù)處理后進(jìn)行分析得到數(shù)據(jù)分析結(jié)果,并將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,因spark執(zhí)行任務(wù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),為外部讀取設(shè)備提供內(nèi)存級(jí)速度的跨集群文件共享服務(wù),提高了數(shù)據(jù)讀取效率,且該內(nèi)存分布式文件系統(tǒng)將數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理分隔開(kāi),減少了數(shù)據(jù)處理中垃圾回收次數(shù)和時(shí)間,提高了數(shù)據(jù)處理效率。在一個(gè)實(shí)施例中,上述數(shù)據(jù)處理方法還包括:判斷spark是否出現(xiàn)故障,若是,則重啟spark,從內(nèi)存分布式文件系統(tǒng)中讀取緩存的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果,若否,則將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中。本實(shí)施例中,當(dāng)spark出現(xiàn)故障時(shí),源數(shù)據(jù)以及數(shù)據(jù)分析結(jié)果都安全地存儲(chǔ)在tachyon內(nèi)存分布式文件系統(tǒng)中。重啟spark后,程序直接從tachyon內(nèi)存分布式文件系統(tǒng)中讀取上次時(shí)間間隔緩存的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果,快速實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的功能,數(shù)據(jù)不易消失。數(shù)據(jù)分析結(jié)果包括數(shù)據(jù)分析過(guò)程中的所有結(jié)果。圖4為另一個(gè)實(shí)施例中數(shù)據(jù)處理方法的流程圖。如圖4所示,在一個(gè)實(shí)施例中,在啟動(dòng)該spark集群,并對(duì)該spark集群初始化的步驟之后,該數(shù)據(jù)處理方法還包括:步驟402,接收數(shù)據(jù)。本實(shí)施例中,接收一個(gè)或多個(gè)客戶端傳輸?shù)臄?shù)據(jù)。為了提高數(shù)據(jù)的傳輸效率,減少tcp請(qǐng)求次數(shù),客戶端可先在本地緩存預(yù)定數(shù)據(jù),壓縮后再傳輸至服務(wù)器。服務(wù)器監(jiān)聽(tīng)數(shù)據(jù)接收端口,當(dāng)有新數(shù)據(jù)到達(dá)時(shí),獲取數(shù)據(jù)的路徑信息并緩存到隊(duì)列中。步驟404,對(duì)該數(shù)據(jù)進(jìn)行處理得到源數(shù)據(jù)。本實(shí)施例中,從隊(duì)列中提取出數(shù)據(jù)的路徑信息,用信息摘要值算法檢查數(shù)據(jù)的完整性,通過(guò)后對(duì)數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換、合并、緩存等操作,直到整個(gè)數(shù)據(jù)處理完成,得到源數(shù)據(jù)。步驟406,將該源數(shù)據(jù)存入內(nèi)存分布式文件系統(tǒng)。本實(shí)施例中,整個(gè)數(shù)據(jù)處理完成后,調(diào)用存儲(chǔ)接口把源數(shù)據(jù)按預(yù)定規(guī)則寫(xiě)入到內(nèi)存分布式文件系統(tǒng)中。通過(guò)對(duì)接收的數(shù)據(jù)進(jìn)行處理轉(zhuǎn)化為源數(shù)據(jù),將源數(shù)據(jù)存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,方便讀取。需要說(shuō)明的是,上述數(shù)據(jù)處理方法因?qū)?shù)據(jù)存儲(chǔ)在內(nèi)存分布式文件系統(tǒng)中,可以跟第三方軟件共享數(shù)據(jù),第三方軟件可為hive、mapreduce等。hive是基于hadoop平臺(tái)的數(shù)據(jù)倉(cāng)庫(kù),通過(guò)將sql語(yǔ)句轉(zhuǎn)換為mapreduce任務(wù)中運(yùn)行,適用于處理海量離線數(shù)據(jù)分析。圖5為一個(gè)實(shí)施例中數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。如圖5所示,一種數(shù)據(jù)處理裝置,包括配置模塊502、初始化模塊504、讀取模塊506、預(yù)處理模塊508、分析模塊510和存儲(chǔ)模塊512。其中:配置模塊502用于對(duì)內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行配置,將內(nèi)存分布式文件系統(tǒng)及spark集群進(jìn)行關(guān)聯(lián)。本實(shí)施例中,配置模塊502還用于指定內(nèi)存分布式文件系統(tǒng)底層使用的文件系統(tǒng)及文件系統(tǒng)的實(shí)現(xiàn)類;設(shè)置內(nèi)存分布式文件系統(tǒng)的主節(jié)點(diǎn)的ip、訪問(wèn)端口和緩存路徑,及設(shè)置內(nèi)存分布式文件系統(tǒng)的從節(jié)點(diǎn)的端口、數(shù)據(jù)服務(wù)端口和數(shù)據(jù)存儲(chǔ)路徑;指定spark集群?jiǎn)?dòng)參數(shù),指定內(nèi)存分布式文件系統(tǒng)所依賴包路徑,配置內(nèi)存文件系統(tǒng)運(yùn)行在底層使用的文件系統(tǒng)之上以及內(nèi)存文件系統(tǒng)的容錯(cuò)功能等。初始化模塊504用于啟動(dòng)該spark集群,并對(duì)該spark集群初始化。本實(shí)施例中,初始化模塊504還用于初始化上下文全局對(duì)象,以及初始化執(zhí)行類型。讀取模塊506用于從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù)。預(yù)處理模塊508用于對(duì)該源數(shù)據(jù)進(jìn)行預(yù)處理,得到預(yù)處理后的數(shù)據(jù)。圖6為一個(gè)實(shí)施例中預(yù)處理模塊的內(nèi)部結(jié)構(gòu)框圖。如圖6所示,該預(yù)處理模塊508包括轉(zhuǎn)換單元5082、過(guò)濾單元5084和注冊(cè)單元5086。其中:轉(zhuǎn)換單元5082用于將該源數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的數(shù)據(jù)。本實(shí)施例中,預(yù)定格式可為json格式,則將源數(shù)據(jù)按行轉(zhuǎn)換成一個(gè)json字符串返回。過(guò)濾單元5084用于將該預(yù)定格式的數(shù)據(jù)進(jìn)行過(guò)濾。本實(shí)施例中,將json格式的數(shù)據(jù)進(jìn)行過(guò)濾。注冊(cè)單元5086用于將過(guò)濾后的數(shù)據(jù)注冊(cè)成具有相同結(jié)構(gòu)模式的臨時(shí)表。分析模塊510用于將該預(yù)處理后的數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。本實(shí)施例中,通過(guò)sql將該臨時(shí)表映射的框架數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)分析結(jié)果。存儲(chǔ)模塊512用于將該數(shù)據(jù)分析結(jié)果存儲(chǔ)到該內(nèi)存分布式文件系統(tǒng)中。本實(shí)施例中,將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,可采用兩種方式。第一種是將數(shù)據(jù)分析結(jié)果中的數(shù)據(jù)轉(zhuǎn)化為文本存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中。第二種是將數(shù)據(jù)分析結(jié)果直接保存到內(nèi)存分布式文件系統(tǒng)中。上述數(shù)據(jù)處理裝置,通過(guò)將內(nèi)存分布式文件系統(tǒng)與spark集群進(jìn)行關(guān)聯(lián),基于spark分析數(shù)據(jù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),對(duì)源數(shù)據(jù)進(jìn)行預(yù)處理后進(jìn)行分析得到數(shù)據(jù)分析結(jié)果,并將數(shù)據(jù)分析結(jié)果存儲(chǔ)到內(nèi)存分布式文件系統(tǒng)中,因spark執(zhí)行任務(wù)時(shí),從內(nèi)存分布式文件系統(tǒng)中讀取源數(shù)據(jù),為外部讀取設(shè)備提供內(nèi)存級(jí)速度的跨集群文件共享服務(wù),提高了數(shù)據(jù)讀取效率,且該內(nèi)存分布式文件系統(tǒng)將數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理分隔開(kāi),減少了數(shù)據(jù)處理中垃圾回收次數(shù)和時(shí)間,提高了數(shù)據(jù)處理效率。在一個(gè)實(shí)施例中,上述數(shù)據(jù)處理裝置還包括判斷模塊,判斷模塊判斷spark是否出現(xiàn)故障。讀取模塊506還用于當(dāng)spark出現(xiàn)故障時(shí),重啟spark,從內(nèi)存分布式文件系統(tǒng)中讀取緩存的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果。本實(shí)施例中,當(dāng)spark出現(xiàn)故障時(shí),源數(shù)據(jù)以及數(shù)據(jù)分析結(jié)果都安全地存儲(chǔ)在tachyon內(nèi)存分布式文件系統(tǒng)中。重啟spark后,程序直接從tachyon內(nèi)存分布式文件系統(tǒng)中讀取上次時(shí)間間隔緩存的源數(shù)據(jù)及數(shù)據(jù)分析結(jié)果,快速實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的功能,數(shù)據(jù)不易消失。數(shù)據(jù)分析結(jié)果包括數(shù)據(jù)分析過(guò)程中的所有結(jié)果。圖7為另一個(gè)實(shí)施例中數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。如圖7所示,一種數(shù)據(jù)處理裝置,除了包括配置模塊502、初始化模塊504、讀取模塊506、預(yù)處理模塊508、分析模塊510和存儲(chǔ)模塊512,還包括接收模塊514和處理模塊516。其中:接收模塊514用于在初始化模塊啟動(dòng)該spark集群,并對(duì)該spark集群初始化之后,接收數(shù)據(jù)。處理模塊516用于對(duì)該數(shù)據(jù)進(jìn)行處理得到源數(shù)據(jù)。存儲(chǔ)模塊512還用于將該源數(shù)據(jù)存入內(nèi)存分布式文件系統(tǒng)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(read-onlymemory,rom)等。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1