本發(fā)明涉及大數(shù)據(jù)整理技術(shù)領(lǐng)域,具體而言,涉及一種大數(shù)據(jù)清洗方法及裝置。
背景技術(shù):
隨著大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)的規(guī)模變得龐大,數(shù)據(jù)的增長速度變快,數(shù)據(jù)的類型和結(jié)構(gòu)也更加繁多。如何能把大數(shù)據(jù)變成有用的數(shù)據(jù),如何能從龐大的數(shù)據(jù)中挖掘其中的價(jià)值變得越來越迫切和重要。
數(shù)據(jù)清洗就是其中首要的工作,通過數(shù)據(jù)清洗能夠?qū)崿F(xiàn)對(duì)大數(shù)據(jù)進(jìn)行降噪,主要是將不完整的數(shù)據(jù)、錯(cuò)誤的數(shù)據(jù)和重復(fù)的數(shù)據(jù)進(jìn)行排除,從而得到一致性較高的數(shù)據(jù)。
現(xiàn)有的數(shù)據(jù)清洗技術(shù)中,清洗程序大部分是單機(jī)程序,清洗速度和清洗效率較低。其在一定的數(shù)據(jù)量級(jí)下,能夠通過計(jì)算機(jī)技術(shù)實(shí)現(xiàn)自動(dòng)數(shù)據(jù)清洗。但在大數(shù)據(jù)時(shí)代,隨著數(shù)據(jù)量和數(shù)據(jù)類型的增加,現(xiàn)有的數(shù)據(jù)清洗技術(shù)已經(jīng)難以滿足當(dāng)前數(shù)據(jù)清洗的需求。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種大數(shù)據(jù)清洗方法及裝置,能夠顯著提高數(shù)據(jù)清洗的清洗速度和清洗效率。
第一方面,本發(fā)明實(shí)施例提供了一種大數(shù)據(jù)清洗方法,包括:
對(duì)清洗流程進(jìn)行配置定義;
對(duì)清洗流程進(jìn)行解析,將清洗流程轉(zhuǎn)換為Spark的原子操作;
將清洗任務(wù)提交至Spark集群;
由Spark集群進(jìn)行數(shù)據(jù)清洗。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能的實(shí)施方式,其中,所述由Spark集群進(jìn)行數(shù)據(jù)清洗,具體包括:
從數(shù)據(jù)源加載數(shù)據(jù);
利用分布式并行的清洗算法,對(duì)數(shù)據(jù)進(jìn)行清洗;
對(duì)數(shù)據(jù)清洗的結(jié)果進(jìn)行存儲(chǔ)。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第二種可能的實(shí)施方式,其中,所述清洗算法包括空值處理、去重處理和排序處理中的至少一種。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第三種可能的實(shí)施方式,其中,多個(gè)清洗算法之間的數(shù)據(jù)流轉(zhuǎn)通過彈性分布式數(shù)據(jù)集傳遞。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第四種可能的實(shí)施方式,其中,所述數(shù)據(jù)源為數(shù)據(jù)庫或分布式文件系統(tǒng)。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第五種可能的實(shí)施方式,其中,所述對(duì)清洗流程進(jìn)行配置定義,具體為:
基于JSON格式,對(duì)清洗流程進(jìn)行配置定義。
第二方面,本發(fā)明實(shí)施例還提供一種大數(shù)據(jù)清洗裝置,包括:
大數(shù)據(jù)清洗引擎,用于對(duì)清洗流程進(jìn)行配置定義;對(duì)清洗流程進(jìn)行解析,將清洗流程轉(zhuǎn)換為Spark的原子操作;將清洗任務(wù)提交至Spark集群;
Spark集群,用于進(jìn)行數(shù)據(jù)清洗。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第一種可能的實(shí)施方式,其中,所述Spark集群具體用于:
從數(shù)據(jù)源加載數(shù)據(jù);
利用分布式并行的清洗算法,對(duì)數(shù)據(jù)進(jìn)行清洗;
對(duì)數(shù)據(jù)清洗的結(jié)果進(jìn)行存儲(chǔ)。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第二種可能的實(shí)施方式,其中,該裝置還包括存儲(chǔ)組件,用于存儲(chǔ)數(shù)據(jù)清洗的結(jié)果。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第三種可能的實(shí)施方式,其中,所述清洗算法包括空值處理、去重處理和排序處理中的至少一種。
本發(fā)明實(shí)施例帶來了以下有益效果:采用本發(fā)明實(shí)施例提供的大數(shù)據(jù)清洗方法及清洗裝置,先對(duì)清洗流程進(jìn)行配置定義,再對(duì)清洗流程進(jìn)行解析并轉(zhuǎn)換為Spark的原子操作。將清洗任務(wù)提交至大數(shù)據(jù)分析框架Spark集群后,由Spark集群進(jìn)行數(shù)據(jù)清洗,因?yàn)槊總€(gè)清洗流程中的每個(gè)步驟都已轉(zhuǎn)換為Spark的原子操作,所以在Spark集群中進(jìn)行的各個(gè)清洗步驟均可以分布式并行執(zhí)行,從而能夠顯著提高數(shù)據(jù)清洗的清洗速度,實(shí)現(xiàn)高速度和高效率的數(shù)據(jù)清洗,更加適用于當(dāng)前的大數(shù)據(jù)環(huán)境。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明實(shí)施例一所提供的一種大數(shù)據(jù)清洗方法的流程圖;
圖2示出了本發(fā)明實(shí)施例二所提供的一種大數(shù)據(jù)清洗裝置的示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
目前的數(shù)據(jù)清洗技術(shù)中,清洗程序大部分是單機(jī)程序,清洗速度和清洗效率較低,難以滿足當(dāng)前大數(shù)據(jù)環(huán)境下數(shù)據(jù)清洗的需求。
基于此,本發(fā)明實(shí)施例提供的一種大數(shù)據(jù)清洗方法及裝置,能夠顯著提高數(shù)據(jù)清洗的清洗速度,實(shí)現(xiàn)高速度和高效率的數(shù)據(jù)清洗,更加適用于當(dāng)前的大數(shù)據(jù)環(huán)境。
實(shí)施例一:
如圖1所示,本發(fā)明實(shí)施例提供一種大數(shù)據(jù)清洗方法,主要包括以下步驟:
S1:對(duì)清洗流程進(jìn)行配置定義。
具體的,啟動(dòng)數(shù)據(jù)清洗引擎,首先加載清洗流程配置文件,基于JSON(Java Script Object Notation)格式,對(duì)清洗流程進(jìn)行配置定義,配置項(xiàng)示例如下:
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,是基于ECMAScript的一個(gè)子集。JSON采用完全獨(dú)立于語言的文本格式,使JSON成為理想的數(shù)據(jù)交換語言,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,在跨平臺(tái)數(shù)據(jù)傳輸上有很大的優(yōu)勢。
S2:對(duì)清洗流程進(jìn)行解析,將清洗流程轉(zhuǎn)換為Spark的原子操作。
大數(shù)據(jù)清洗引擎根據(jù)配置文件的定義信息對(duì)清洗流程進(jìn)行解析,將清洗步驟轉(zhuǎn)換為Spark的原子操作。
Spark是云計(jì)算領(lǐng)域的繼Hadoop之后的最熱門的通用的并行計(jì)算框架,是一種可伸縮(scalable)的基于內(nèi)存計(jì)算(In-Memory Computing)的集群數(shù)據(jù)分析平臺(tái),比Hadoop集群存儲(chǔ)方法更有性能優(yōu)勢。Spark基于內(nèi)存的分布式數(shù)據(jù)集,優(yōu)化了迭代式的工作負(fù)載以及交互式查詢,從而提高了大數(shù)據(jù)計(jì)算的速度和效率。
S3:將清洗任務(wù)提交至Spark集群。
首先初始化Spark集群,加載Spark上下文環(huán)境,為清洗操作提交做準(zhǔn)備。然后根據(jù)清洗流程定義的順序,將具體的數(shù)據(jù)清洗操作提交至Spark集群。
S4:由Spark集群進(jìn)行數(shù)據(jù)清洗。
S41:從數(shù)據(jù)源加載數(shù)據(jù)。
數(shù)據(jù)源可以是不同類型的數(shù)據(jù)來源,本實(shí)施例中的數(shù)據(jù)源為數(shù)據(jù)庫或分布式文件系統(tǒng)(Hadoop Distributed File System,簡稱HDFS)。
在其他實(shí)施方式中,也可以根據(jù)具體的業(yè)務(wù)進(jìn)行擴(kuò)展,擴(kuò)展數(shù)據(jù)源類型只需要相應(yīng)的增加數(shù)據(jù)加載原子處理即可,數(shù)據(jù)源的加載過程也是分布式并行處理。
S42:利用分布式并行的清洗算法,對(duì)數(shù)據(jù)進(jìn)行清洗。
本實(shí)施例中例舉了三種清洗算法:空值處理、去重處理和排序處理。
作為一個(gè)優(yōu)選方案,多個(gè)清洗算法之間的數(shù)據(jù)流轉(zhuǎn)通過彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,簡稱RDD)傳遞。因?yàn)镾park集群建立在統(tǒng)一抽象的RDD之上,所以使得Spark集群可以以基本一致的方式應(yīng)對(duì)不同的大數(shù)據(jù)處理場景,包括MapReduce、Streaming、SQL、Machine Learning、Graph等。RDD是一個(gè)容錯(cuò)的、并行的數(shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲(chǔ)到磁盤和內(nèi)存中,并能控制數(shù)據(jù)的分區(qū)。同時(shí),RDD還提供了一組豐富的操作來操作這些數(shù)據(jù),諸如map、flatMap、filter、join、groupBy、reduceByKey等。
本實(shí)施例中例舉了三種清洗算法:空值處理、去重處理和排序處理。在其他實(shí)施方式中,清洗算法并不限于以上三種,可以根據(jù)實(shí)際業(yè)務(wù)需求進(jìn)行擴(kuò)展。新增算法只要新增一個(gè)方法即可,同時(shí)在配置定義中進(jìn)行指定就可應(yīng)用。
S43:對(duì)數(shù)據(jù)清洗的結(jié)果進(jìn)行存儲(chǔ)。
啟動(dòng)數(shù)據(jù)存儲(chǔ)引擎,也就是啟動(dòng)對(duì)清洗的結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)的程序。數(shù)據(jù)存儲(chǔ)引擎根據(jù)配置定義中的結(jié)果定義選擇要存儲(chǔ)的方式,本實(shí)施例中可以通過數(shù)據(jù)庫或者HDFS存儲(chǔ)結(jié)果。在其他實(shí)施方式中,可以進(jìn)行擴(kuò)展其他存儲(chǔ)方式。
本發(fā)明實(shí)施例提供的大數(shù)據(jù)清洗方法中,先對(duì)清洗流程進(jìn)行配置定義,再對(duì)清洗流程進(jìn)行解析并轉(zhuǎn)換為Spark的原子操作。將清洗任務(wù)提交至大數(shù)據(jù)分析框架Spark集群后,由開源的Spark集群進(jìn)行數(shù)據(jù)清洗,最后將數(shù)據(jù)清洗的結(jié)果進(jìn)行存儲(chǔ)。因?yàn)槊總€(gè)清洗流程中的每個(gè)步驟都已轉(zhuǎn)換為Spark的原子操作,所以在Spark集群中進(jìn)行的各個(gè)清洗步驟均可以分布式并行執(zhí)行,從而能夠顯著提高數(shù)據(jù)清洗的清洗速度,實(shí)現(xiàn)高速度和高效率的數(shù)據(jù)清洗,更加適用于當(dāng)前的大數(shù)據(jù)環(huán)境。
此外,Spark集群可以很好的支持?jǐn)U展,基于配置的方式進(jìn)行清洗流程定義可以降低程序的耦合性,增加或者刪除相應(yīng)的清洗算法都可以在最小的改動(dòng)下實(shí)現(xiàn)。
實(shí)施例二:
如圖2所示,本發(fā)明實(shí)施例提供一種大數(shù)據(jù)清洗裝置,包括大數(shù)據(jù)清洗引擎1和Spark集群2。
其中,大數(shù)據(jù)清洗引擎1用于對(duì)清洗流程進(jìn)行配置定義,并對(duì)清洗流程進(jìn)行解析,將清洗流程轉(zhuǎn)換為Spark的原子操作,以及將清洗任務(wù)提交至Spark集群;Spark集群2用于進(jìn)行數(shù)據(jù)清洗。
具體的,大數(shù)據(jù)清洗引擎1啟動(dòng)后,首先加載清洗流程配置文件,基于JSON格式,對(duì)清洗流程進(jìn)行配置定義。然后大數(shù)據(jù)清洗引擎1根據(jù)配置文件的定義信息對(duì)清洗流程進(jìn)行解析,將清洗步驟轉(zhuǎn)換為Spark的原子操作。
Spark集群2初始化之后,大數(shù)據(jù)清洗引擎1根據(jù)清洗流程定義的順序,將具體的數(shù)據(jù)清洗操作提交至Spark集群。
Spark集群2接收到數(shù)據(jù)清洗操作后,先從數(shù)據(jù)源4加載數(shù)據(jù)。數(shù)據(jù)源4可以是不同類型的數(shù)據(jù)來源,本實(shí)施例中的數(shù)據(jù)源4包括數(shù)據(jù)庫或HDFS。在其他實(shí)施方式中,也可以根據(jù)具體的業(yè)務(wù)進(jìn)行擴(kuò)展,擴(kuò)展數(shù)據(jù)源類型只需要相應(yīng)的增加數(shù)據(jù)加載原子處理即可,數(shù)據(jù)源的加載過程也是分布式并行處理。
然后Spark集群2利用分布式并行的清洗算法,對(duì)數(shù)據(jù)進(jìn)行清洗。本實(shí)施例中的清洗算法包括空值處理、去重處理和排序處理。在其他實(shí)施方式中,清洗算法并不限于以上三種,可以根據(jù)實(shí)際業(yè)務(wù)需求進(jìn)行擴(kuò)展。新增算法只要新增一個(gè)方法即可,同時(shí)在配置定義中進(jìn)行指定就可應(yīng)用。
作為一個(gè)優(yōu)選方案,多個(gè)清洗算法之間的數(shù)據(jù)流轉(zhuǎn)通過RDD傳遞。因?yàn)镾park集群建立在統(tǒng)一抽象的RDD之上,所以使得Spark集群可以以基本一致的方式應(yīng)對(duì)不同的大數(shù)據(jù)處理場景,包括MapReduce、Streaming、SQL、Machine Learning、Graph等。RDD是一個(gè)容錯(cuò)的、并行的數(shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲(chǔ)到磁盤和內(nèi)存中,并能控制數(shù)據(jù)的分區(qū)。同時(shí),RDD還提供了一組豐富的操作來操作這些數(shù)據(jù),諸如map、flatMap、filter、join、groupBy、reduceByKey等。
最后,Spark集群2啟動(dòng)數(shù)據(jù)存儲(chǔ)引擎,對(duì)數(shù)據(jù)清洗的結(jié)果進(jìn)行存儲(chǔ)。本發(fā)明實(shí)施例提供的大數(shù)據(jù)清洗裝置還包括存儲(chǔ)組件3,用于存儲(chǔ)數(shù)據(jù)清洗的結(jié)果。
數(shù)據(jù)存儲(chǔ)引擎根據(jù)配置定義中的結(jié)果定義選擇要存儲(chǔ)的方式,本實(shí)施例中可以通過數(shù)據(jù)庫或者HDFS存儲(chǔ)結(jié)果。在其他實(shí)施方式中,可以進(jìn)行擴(kuò)展其他存儲(chǔ)方式。
本發(fā)明實(shí)施例提供的大數(shù)據(jù)清洗裝置中,由大數(shù)據(jù)清洗引擎1對(duì)清洗流程進(jìn)行配置定義,再對(duì)清洗流程進(jìn)行解析并轉(zhuǎn)換為Spark的原子操作。將清洗任務(wù)提交至大數(shù)據(jù)分析框架Spark集群2后,由開源的Spark集群2進(jìn)行數(shù)據(jù)清洗,最后將數(shù)據(jù)清洗的結(jié)果存儲(chǔ)至存儲(chǔ)組件3。因?yàn)槊總€(gè)清洗流程中的每個(gè)步驟都已轉(zhuǎn)換為Spark的原子操作,所以在Spark集群2中進(jìn)行的各個(gè)清洗步驟均可以分布式并行執(zhí)行,從而能夠顯著提高數(shù)據(jù)清洗的清洗速度,實(shí)現(xiàn)高速度和高效率的數(shù)據(jù)清洗,更加適用于當(dāng)前的大數(shù)據(jù)環(huán)境。
此外,Spark集群2可以很好的支持?jǐn)U展,基于配置的方式進(jìn)行清洗流程定義可以降低程序的耦合性,增加或者刪除相應(yīng)的清洗算法都可以在最小的改動(dòng)下實(shí)現(xiàn)。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。