国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      面向海量數(shù)據(jù)的分布式處理方法

      文檔序號(hào):6441933閱讀:213來(lái)源:國(guó)知局

      專利名稱::面向海量數(shù)據(jù)的分布式處理方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及海量數(shù)據(jù)的分布式處理
      技術(shù)領(lǐng)域
      ,尤其涉及一種面向以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)的分布式處理方法。
      背景技術(shù)
      :隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)產(chǎn)生的數(shù)據(jù)越來(lái)越多,如何存儲(chǔ)和處理這些海量數(shù)據(jù),是一個(gè)亟待解決的問(wèn)題。MapReduce是由Google提出的分布式處理框架,用戶只要編寫(xiě)“Map”和“Reduce”中的處理過(guò)程,MapReduce系統(tǒng)就可以使用戶實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的分布式并行處理,并提供自動(dòng)的任務(wù)容錯(cuò)和負(fù)載均衡。結(jié)合Google的分布式文件系統(tǒng)(GFS),MapReduce可以充分利用數(shù)據(jù)的局部性,從而大大減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。Hadoop是MapReduce和GFS架構(gòu)的開(kāi)源實(shí)現(xiàn),被Yahoo!、Facebook等許多公司使用。由于MapReduce框架的高效易用、可容錯(cuò)和可擴(kuò)展,它被廣泛應(yīng)用于文檔聚類、機(jī)器學(xué)習(xí)、日志分析等應(yīng)用程序中。隨著儀器精度,數(shù)據(jù)采集和研究方法的快速發(fā)展,科學(xué)研究收集和生成的數(shù)據(jù)也越來(lái)越多。這些數(shù)據(jù)大多以數(shù)據(jù)的形式(如Net⑶F、HDF文件格式)存儲(chǔ)在網(wǎng)絡(luò)文件系統(tǒng)(NFS)和并行文件系統(tǒng)上,用戶可以編寫(xiě)串行程序用單機(jī)進(jìn)行處理,但是顯然單機(jī)的處理能力無(wú)法應(yīng)對(duì)海量的科學(xué)數(shù)據(jù);用戶可以編寫(xiě)MPI程序來(lái)進(jìn)行多機(jī)處理,但是MPI的調(diào)試、容錯(cuò)和負(fù)載均衡使得完成一個(gè)簡(jiǎn)單的處理程序都非常費(fèi)時(shí)費(fèi)力。MapReduce的分布式處理框架可以克服MPI多機(jī)處理的缺點(diǎn),但是MapReduce并行處理框架最初是針對(duì)Web數(shù)據(jù)而設(shè)計(jì)的,并不能簡(jiǎn)單地應(yīng)用到以數(shù)組方式存儲(chǔ)的科學(xué)數(shù)據(jù)上。另外,科學(xué)家使用MapReduce框架處理數(shù)據(jù)的時(shí)候需要自己編寫(xiě)相應(yīng)的MapReduce處理程序,雖然相比MPI多機(jī)程序,已經(jīng)減少了很多工作量,但還是有一定的學(xué)習(xí)門(mén)檻和工作量。Hive是架設(shè)于MapReduce之上的開(kāi)源SQL引擎,提供數(shù)據(jù)查詢和分析功能。Hive能夠提供SQL語(yǔ)義,并將SQL語(yǔ)義轉(zhuǎn)化為MapReduce任務(wù)進(jìn)行執(zhí)行。但是Hive并不能直接應(yīng)用于科學(xué)數(shù)據(jù)處理,因?yàn)镠ive中的處理都是基于表的列和行進(jìn)行的,而以數(shù)組形式存儲(chǔ)的科學(xué)數(shù)據(jù)沒(méi)有表的列和行的概念。
      發(fā)明內(nèi)容(一)要解決的技術(shù)問(wèn)題本發(fā)明要解決的技術(shù)問(wèn)題是如何設(shè)計(jì)一種對(duì)于以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)的分布式處理方法。(二)技術(shù)方案為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種面向海量數(shù)據(jù)的分布式處理方法,包括以下步驟Sl根據(jù)SQL命令以及數(shù)組文件內(nèi)的變量信息計(jì)算輸出變量和條件變量集合中的主變量,如果主變量存在,執(zhí)行步驟S2,其中,所述數(shù)組文件是以數(shù)組形式存儲(chǔ)的數(shù)據(jù)文件;S2:判斷是否進(jìn)行條件變量的選擇優(yōu)化,如果否,那么在讀取數(shù)據(jù)時(shí),遍歷數(shù)組文件中的主變量的整個(gè)索引范圍;如果是,那么先根據(jù)條件變量的選擇范圍計(jì)算輸出變量的維度范圍,并根據(jù)該維度范圍讀取數(shù)據(jù);S3判斷數(shù)組是否合并存儲(chǔ),如果否,那么讀取數(shù)組組成數(shù)據(jù)元組;如果是,那么不展開(kāi)讀取的數(shù)據(jù),且生成另一個(gè)數(shù)據(jù)元組,所生成的數(shù)據(jù)元組中每一個(gè)單元都包含該列對(duì)應(yīng)變量的數(shù)據(jù)值的集合;S4=SQL引擎根據(jù)SQL命令以及表中定義的各列的數(shù)據(jù)類型生成MapReduce任務(wù)接收到的數(shù)據(jù)元組,并生成結(jié)果數(shù)據(jù)元組;S5:對(duì)于生成的結(jié)果數(shù)據(jù)元組,判斷是否需要將其以數(shù)組文件存儲(chǔ),如果否,那么就按照保存為其他文件格式的方法處理該結(jié)果數(shù)據(jù)元組;如果是,那么判斷結(jié)果數(shù)據(jù)元組中的數(shù)組是否被合并存儲(chǔ),如果未被合并存儲(chǔ),則遍歷結(jié)果數(shù)據(jù)的行,每一列生成一個(gè)變量的數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件,如果已被合并存儲(chǔ),那么將結(jié)果數(shù)據(jù)元組中每個(gè)單元的內(nèi)容取出作為一個(gè)變量數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件。優(yōu)選地,步驟S3中,如果數(shù)據(jù)不進(jìn)行合并存儲(chǔ),則所述數(shù)據(jù)元組的個(gè)數(shù)取決于主變量的維度范圍,每個(gè)數(shù)據(jù)元組包含輸出變量和條件變量在當(dāng)前主變量索引處的值。優(yōu)選地,所述海量數(shù)據(jù)包括多個(gè)所述數(shù)據(jù)文件。(三)有益效果本發(fā)明設(shè)計(jì)了一種基于MapReduce的、對(duì)于以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)的分布式處理方法,使得用戶可以使用SQL命令對(duì)以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)進(jìn)行分布式處理,該方法具有使用簡(jiǎn)單、運(yùn)行高效,可容錯(cuò)的特點(diǎn)。圖1為本發(fā)明實(shí)施例的方法流程圖2為多維數(shù)組到數(shù)據(jù)庫(kù)表的行和列的相互映射例示圖3為對(duì)條件變量進(jìn)行選擇優(yōu)化的例示圖4為在表格單元中合并數(shù)組存儲(chǔ)的例示圖。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。首先需要說(shuō)明的是,由于以數(shù)組形式存儲(chǔ)的科學(xué)數(shù)據(jù)文件格式比較多,本發(fā)明實(shí)施例中以常用的Net⑶F文件格式為例。Net⑶F文件示例如下example1.nc文件中存儲(chǔ)了χ[x]、y[y]、time[time]、varl[time,y]、var2[time,y]、val3[time][y][x],6個(gè)變量,定義如下所示Netcdfexample1{dimensions:x=4;y=6;time=UNLIMITED;//(2currently)variables:intx(x);inty(y);doubletime(time);intvail(time,y);intval2(time,y);intval3(time,y,x);data:x=2,6,4,8;y=3,6,9,12,15,18;time=1000.0,1001.0;varl=l,2,3,4,5,6,7,8,9,10,ll,12;var2=2,4,6,8,10,12,14,16,18,20,22,24;var3=l,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48;}下面對(duì)本發(fā)明實(shí)施例中所用到的一些名詞進(jìn)行說(shuō)明輸出變量指SQL查詢中select語(yǔ)句中作用到的變量;條件變量指SQL查詢中where語(yǔ)句中作用到并進(jìn)行條件判斷的變量;維度變量指變量名稱和維度名稱相同的變量,如X(X);主變量如果在一組變量中,其他變量都是某一變量a的維度變量或者是與該變量a每一個(gè)維度都相同的變量,則該變量a為主變量。例如變量集合{time(time),y(y),var1(time,y),var2(time,y)}ψ,var1(time,y)>var2(time,y)者Pi±$fi。量中,有可能不存在主變量,如{time(time),var1(time,y),var3(time,y,x)},因?yàn)関arl不是var3的維度變量且varl的維度和var3不同。下面結(jié)合圖1對(duì)本發(fā)明實(shí)施例的方法流程進(jìn)行詳細(xì)說(shuō)明,該圖1也是圖2所示的數(shù)組和表的相互映射方法以及圖3所示的優(yōu)化方法在MapReduce和其SQL引擎系統(tǒng)實(shí)現(xiàn)的具體流程。本發(fā)明實(shí)施例的方法包括以下步驟Sl根據(jù)SQL命令以及數(shù)組文件內(nèi)的變量信息計(jì)算輸出變量和條件變量集合中的主變量,如果主變量不存在,那么返回SQL命令有誤的命令,并停止執(zhí)行本流程;否則執(zhí)行步驟S2。其中,所述數(shù)組文件是以數(shù)組形式存儲(chǔ)的數(shù)據(jù)文件。本發(fā)明中并行處理很多數(shù)據(jù)文件,所以稱為“海量數(shù)據(jù)”。S2:判斷是否進(jìn)行條件變量的選擇優(yōu)化,如果否,那么在讀取數(shù)據(jù)時(shí),遍歷數(shù)組文件中的主變量的整個(gè)索引范圍;如果是,那么先根據(jù)條件變量的選擇范圍計(jì)算輸出變量的維度范圍,并根據(jù)該維度范圍讀取數(shù)據(jù)(而不是遍歷數(shù)組文件中的主變量的整個(gè)索引范圍)。S3判斷數(shù)組是否合并存儲(chǔ),如果否,那么讀取數(shù)組組成數(shù)據(jù)元組(該數(shù)據(jù)元組的個(gè)數(shù)取決于主變量的維度范圍,每個(gè)數(shù)據(jù)元組包含輸出變量和條件變量在當(dāng)前主變量索引處的值);如果是,那么不展開(kāi)讀取的數(shù)據(jù),且生成另一個(gè)數(shù)據(jù)元組,所生成的數(shù)據(jù)元組中每一個(gè)單元都包含該列對(duì)應(yīng)變量的數(shù)據(jù)值的集合。S4=SQL引擎根據(jù)SQL命令以及表(表包含兩個(gè)意思,一個(gè)是表的結(jié)構(gòu),另外一個(gè)是表的數(shù)據(jù),這里指表的結(jié)構(gòu))中定義的各列的數(shù)據(jù)類型來(lái)生成MapReduce任務(wù)接收到的數(shù)據(jù)元組,并生成結(jié)果數(shù)據(jù)元組;S5對(duì)于生成的結(jié)果數(shù)據(jù)元組,判斷是否需要將其以數(shù)組文件存儲(chǔ)。如果否,那么就按照保存為其他文件格式的方法處理該結(jié)果數(shù)據(jù)元組;如果是,那么判斷結(jié)果數(shù)據(jù)元組中的數(shù)組是否被合并存儲(chǔ),如果未被合并存儲(chǔ),則遍歷結(jié)果數(shù)據(jù)的行,每一列生成一個(gè)變量的數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件,如果被合并存儲(chǔ)了,那么將結(jié)果數(shù)據(jù)元組中每個(gè)單元的內(nèi)容取出來(lái)作為一個(gè)變量數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件。其中,給MapReduce的輸入數(shù)據(jù)和結(jié)果數(shù)據(jù)都是很多數(shù)據(jù)元組,一個(gè)數(shù)據(jù)元組對(duì)應(yīng)所述表中一行的數(shù)據(jù)。關(guān)于輸入文件格式、優(yōu)化方法、以及輸出文件格式的選擇,可以由用戶指定,也可由系統(tǒng)根據(jù)SQL命令和數(shù)據(jù)屬性自動(dòng)判斷。由于要使用SQL命令來(lái)處理數(shù)據(jù),就必須把這些數(shù)據(jù)映射到數(shù)據(jù)庫(kù)表的行和列。圖2示出了多維數(shù)組到數(shù)據(jù)庫(kù)表的行和列的相互映射方法,這里的相互是指讀文件時(shí),將數(shù)組轉(zhuǎn)化為行和列,寫(xiě)結(jié)果文件時(shí),將行和列轉(zhuǎn)化為數(shù)組,這里的相互映射是指從數(shù)組文件變成和數(shù)據(jù)庫(kù)表對(duì)應(yīng)的數(shù)據(jù)元組,經(jīng)過(guò)MapReduce處理后,再由數(shù)組元組變成數(shù)組文件的過(guò)程,包含在整個(gè)步驟SlS5中。在讀取輸入文件時(shí),將多維數(shù)組按主變量展開(kāi),然后將其排列成數(shù)據(jù)庫(kù)表的行和列的方式,表中的列是對(duì)應(yīng)變量的單個(gè)值,表中的行是每個(gè)主變量和其維度變量的值。之后根據(jù)SQL語(yǔ)義的處理命令處理相應(yīng)的行和列,在將結(jié)果寫(xiě)入輸出文件時(shí),遍歷表的行,并將對(duì)應(yīng)的列轉(zhuǎn)化為數(shù)組進(jìn)行存儲(chǔ)。圖2所示的方法的缺點(diǎn)是對(duì)于數(shù)據(jù)的范圍查詢和處理,很有可能讀取和展開(kāi)了不必要的數(shù)據(jù),圖2對(duì)條件變量進(jìn)行了選擇優(yōu)化,在讀取輸入文件時(shí),先根據(jù)條件變量的查詢范圍條件計(jì)算對(duì)應(yīng)維度的范圍,然后根據(jù)維度的范圍讀取需要的變量。能這樣優(yōu)化的前提是條件變量的選擇的范圍是一段連續(xù)的范圍,不能是離散的或是多個(gè)連續(xù)范圍。一般來(lái)說(shuō)這要求條件變量的值是遞增或遞減的。之后根據(jù)SQL語(yǔ)義的處理命令處理相應(yīng)的行和列,在將結(jié)果寫(xiě)入輸出文件時(shí),遍歷表的行,并將對(duì)應(yīng)的列轉(zhuǎn)化為數(shù)組進(jìn)行存儲(chǔ)。圖2,圖3所示的方法中會(huì)將變量展開(kāi),為了減少中間數(shù)據(jù)的大小,同時(shí)為了保留變量之間的維度關(guān)系,可以在表格單元中合并數(shù)組存儲(chǔ)。圖3示出了在圖2的基礎(chǔ)上進(jìn)行合并數(shù)組存儲(chǔ)。在讀取輸入文件時(shí),先根據(jù)條件變量的查詢范圍條件計(jì)算對(duì)應(yīng)維度的范圍,然后根據(jù)維度的范圍讀取需要的變量,并將每個(gè)變量對(duì)應(yīng)到表的一列,為了避免變量展開(kāi)后的數(shù)據(jù)膨脹,這里沒(méi)有按照主變量進(jìn)行展開(kāi),而是一行中每個(gè)單元的內(nèi)容包含該單元對(duì)應(yīng)變量的符合計(jì)算范圍的值的集合,之后根據(jù)SQL語(yǔ)義的處理命令,處理相應(yīng)的行和列。這樣優(yōu)化一般都是針對(duì)簡(jiǎn)單的范圍抽取查詢,因?yàn)槌朔秶槿?,其他?duì)合并存儲(chǔ)的變量處理,還是需要對(duì)其進(jìn)行展開(kāi)。在將結(jié)果寫(xiě)入輸出文件時(shí),將每一行中的單元取出,由于一個(gè)單元中是對(duì)應(yīng)變量的值的集合,可以直接按照數(shù)組進(jìn)行存儲(chǔ),最后變量之間的維度關(guān)系仍然能夠保留。下面介紹用戶使用本發(fā)明的方法對(duì)海量數(shù)據(jù)進(jìn)行分布式處理的操作流程由于以數(shù)組形式存儲(chǔ)的科學(xué)數(shù)據(jù)文件格式比較多,這里以比較常用的NetCDF文件格式為例。Net⑶F文件中,數(shù)據(jù)以數(shù)組的形式進(jìn)行存儲(chǔ),比如Hadoop的HDFS文件系統(tǒng)上‘/user/yifeng/example‘下一個(gè)examplel.nc文件中存儲(chǔ)了x[x]、y[y]、time[time]、varl[time,y]、var2[time,y]、val3[time][y][x]6個(gè)變量。第一步要?jiǎng)?chuàng)建表來(lái)映射Net⑶F文件中的變量createtableexample(intχ,inty,doubletime,intvail,intval2,intval3)ROWFORMATSERDE'org.apache,hadoop.hive,contrib.serde2.NcFileSerDe'STOREDASINPUTF0RMAT'org.apache,hadoop.hive,contrib.fileformat.ηetcdf.NcFileInputFormat'0UTPUTF0RMAT'org.apache,hadoop.hive,contrib.fileformat.netcdf.NcFileOutputFormat'這里創(chuàng)建了一個(gè)表,表的名稱為example,其中包含6個(gè)變量和examplel.nc中變量類型和名稱是一致的。這里指定了SERDE為org.apache,hadoop.hive,contrib.serde2.NcFileSerDe,INPUTF0RMAT為org.apache,hadoop.hive,contrib.fileformat.netcdf.NcFiIeInputFormat,0UTPUTF0RMAT為org.apache,hadoop.hive,contrib.fileformat.netcdf.NcFiIeOutputFormat0SERDE是Hive中用來(lái)對(duì)數(shù)據(jù)進(jìn)行變換操作以及序列化和反序列化,INPUTF0RMAT是文件的Hive中文件的輸入格式,這里是以NetCDF文件格式輸入,0UTPUTF0RMAT是Hive中文件的輸出格式,這里以NetCDF文件格式輸出。用戶可以指定不同的INPUTF0RMAT和SERDE來(lái)選擇不同的優(yōu)化方法,系統(tǒng)也可以根據(jù)用戶的查詢和數(shù)據(jù)屬性來(lái)判斷。第二步是將整個(gè)數(shù)據(jù)集和表對(duì)應(yīng)起來(lái)LOADDATAINPATH‘/user/yifeng/example'OVERWRITEINTOTABLEexample;這樣Hadoop文件系統(tǒng)HDFS上/user/yifeng/example目錄下所有的Net⑶F文件都映射到這個(gè)表了,這里要求Net⑶F文件的結(jié)構(gòu)都和examplel.nc相同(包含相同的維度和變量),數(shù)據(jù)可以不同,由于大多數(shù)數(shù)據(jù)都是按照某一維度(如時(shí)間)分片存儲(chǔ),所以能夠滿足結(jié)構(gòu)相同的要求。第三步是用戶輸入SQL命令,系統(tǒng)會(huì)根據(jù)SQL命令動(dòng)態(tài)映射并對(duì)相關(guān)變量進(jìn)行數(shù)據(jù)處理并產(chǎn)生結(jié)果文件。下面舉例說(shuō)明例1SQL命令為selecttime,varl,var2fromexamplewherey>=3andy<=9;(1)未進(jìn)行條件變量選擇優(yōu)化和數(shù)組合并存儲(chǔ)的情況NcFileInputi7Ormat從查詢命令中得知要使用3個(gè)變量time,y,varl,其中輸出變量為time,varl,y為條件變量,根據(jù)Net⑶F文件頭信息得知varl,var2為主變量,time,y都是varl和var2的維度變量。NcFileInputi7Ormat從Net⑶F文件中遍歷輸出數(shù)據(jù)元組{time,y,varl,var2},如第一個(gè)數(shù)據(jù)元組為{1000.0,3,1,2},數(shù)據(jù)元組的個(gè)數(shù)取決于主變量varl或var2的維度,這里為6x2=12,NcFileSerDe從NcFilehputFormat得知要使用的變量為time,y,varl,var2,并根據(jù)表中變量的類型來(lái)反序列化NcFilehputFormat輸出的數(shù)據(jù)元組{time為double類型,y為int類型,varl為int類型,var2為int類型},之后就交給Hive的SQL引擎去在執(zhí)行MapReduce任務(wù)了。MapReduce從12個(gè)數(shù)據(jù)元組中過(guò)濾出y>=3和y<=9的元組,共3x2個(gè)。0UTPUTF0RMAT將其寫(xiě)到Net⑶F文件,結(jié)果如下Netcdfoutput1{dimensions:len=6;variables:time(len);varl(Ien);var2(Ien);data:time=1000.0,1000.0,1000.0,1001.0,1001.0,1001.0;varl=l,2,3,7,8,9;var2=2,4,6,14,16,18;}可以看到varl,var2和time之間的維度關(guān)系無(wú)法保留。(2)進(jìn)行條件變量選擇優(yōu)化和數(shù)組合并存儲(chǔ)的情況NcFileInputFormat從查詢命令中得知要使用3個(gè)變量time,y,varl,其中輸出變量為time,varl,y為條件變量,根據(jù)Net⑶F文件頭信息得知varl為主變量,time,y都是varl的維度變量。NcFilelnputi^rmat從根據(jù)判斷條件y>=3andy<=9得到varl,生成一個(gè)數(shù)組元組{[1000.0,1001.0],{[1,2,3,7,8,9],[2,3]},[2,4,6,14,16,18],3},varl中的[2,3]說(shuō)明主變量varl(var2同varl)的time維度長(zhǎng)度為2,y維度長(zhǎng)度為3.Hive的SQL引擎生成MapReduce任務(wù)不會(huì)過(guò)濾該元組,因?yàn)閥=3符合y>=3andy<=9的條件,最后生成的Net⑶F文件如下Netcdfouptutl{dimensions:time=2;y=3;varl=6;variables:time(time);varl(time,y);var2(time,y)data:time=1000.0,1001.0;varl=l,2,3,7,8,9;var2=2,4,6,14,16,18;}可以看到varl,var2和time之間的維度關(guān)系仍然保留,并且傳輸?shù)臄?shù)據(jù)量和生成的文件大小比未進(jìn)行條件選擇優(yōu)化的方法要小。例2SQL命令為:selecttime,y,χ,var3,fromexamplewherey=6andx>=6andχ<=8;(1)未進(jìn)行條件選擇優(yōu)化和數(shù)組合并存儲(chǔ)的情況{time,y,x,var3}中主變量為var3.總的生成的數(shù)據(jù)元組為為2x6x4=48個(gè),經(jīng)過(guò)過(guò)濾符合條件數(shù)據(jù)元組的共有=4個(gè),具體如下{1000.0,6,6,6},{1000.0,6,8,8},{1001.0,6,6,30},{1001.0,6,8,32},最后生成的NetCDF文件如下Netcdfoutput1{dimensions:len=4;variables:time(len);y(Ien);x(len);var3(Ien);data:time=1000.0,1000.0,1001.0,1001.0;y=6,6,6,6;x=6,8,6,8;var3=6,8,30,32;(2)進(jìn)行條件選擇優(yōu)化的情況作為條件變量的χ變量的χ>=6andx>=8的選擇范圍[1,3]不是連續(xù)的,無(wú)法使用條件選擇優(yōu)化。由以上實(shí)施例可以看出,本發(fā)明設(shè)計(jì)了一種基于MapReduce的、對(duì)于以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)的分布式處理方法,使得用戶可以使用SQL命令對(duì)以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)進(jìn)行分布式處理,該方法具有使用簡(jiǎn)單、運(yùn)行高效,可容錯(cuò)的特點(diǎn)。以上所述僅是本發(fā)明的實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
      技術(shù)領(lǐng)域
      的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變型,這些改進(jìn)和變型也應(yīng)視為本發(fā)明的保護(hù)范圍。權(quán)利要求1.一種面向海量數(shù)據(jù)的分布式處理方法,其特征在于,包括以下步驟51根據(jù)SQL命令以及數(shù)組文件內(nèi)的變量信息計(jì)算輸出變量和條件變量集合中的主變量,如果主變量存在,執(zhí)行步驟S2,其中,所述數(shù)組文件是以數(shù)組形式存儲(chǔ)的數(shù)據(jù)文件;52判斷是否進(jìn)行條件變量的選擇優(yōu)化,如果否,那么在讀取數(shù)據(jù)時(shí),遍歷數(shù)組文件中的主變量的整個(gè)索引范圍;如果是,那么先根據(jù)條件變量的選擇范圍計(jì)算輸出變量的維度范圍,并根據(jù)該維度范圍讀取數(shù)據(jù);53判斷數(shù)組是否合并存儲(chǔ),如果否,那么讀取數(shù)組組成數(shù)據(jù)元組;如果是,那么不展開(kāi)讀取的數(shù)據(jù),且生成另一個(gè)數(shù)據(jù)元組,所生成的數(shù)據(jù)元組中每一個(gè)單元都包含該列對(duì)應(yīng)變量的數(shù)據(jù)值的集合;54=SQL引擎根據(jù)SQL命令以及表中定義的各列的數(shù)據(jù)類型生成MapReduce任務(wù)接收到的數(shù)據(jù)元組,并生成結(jié)果數(shù)據(jù)元組;S5:對(duì)于生成的結(jié)果數(shù)據(jù)元組,判斷是否需要將其以數(shù)組文件存儲(chǔ),如果否,那么就按照保存為其他文件格式的方法處理該結(jié)果數(shù)據(jù)元組;如果是,那么判斷結(jié)果數(shù)據(jù)元組中的數(shù)組是否被合并存儲(chǔ),如果未被合并存儲(chǔ),則遍歷結(jié)果數(shù)據(jù)的行,每一列生成一個(gè)變量的數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件,如果已被合并存儲(chǔ),那么將結(jié)果數(shù)據(jù)元組中每個(gè)單元的內(nèi)容取出作為一個(gè)變量數(shù)組,并按照表中定義的列的數(shù)據(jù)類型將數(shù)組存儲(chǔ)到數(shù)組文件。2.如權(quán)利要求1所述的方法,其特征在于,步驟S3中,如果數(shù)據(jù)不進(jìn)行合并存儲(chǔ),則所述數(shù)據(jù)元組的個(gè)數(shù)取決于主變量的維度范圍,每個(gè)數(shù)據(jù)元組包含輸出變量和條件變量在當(dāng)前主變量索引處的值。3.如權(quán)利要求1或2所述的方法,其特征在于,所述海量數(shù)據(jù)包括多個(gè)所述數(shù)據(jù)文件。全文摘要本發(fā)明涉及海量數(shù)據(jù)的分布式處理
      技術(shù)領(lǐng)域
      ,公開(kāi)了一種面向海量數(shù)據(jù)的分布式處理方法,包括以下步驟S1根據(jù)SQL命令以及數(shù)組文件內(nèi)的變量信息計(jì)算輸出變量和條件變量集合中的主變量,如果主變量存在,執(zhí)行S2;S2判斷是否進(jìn)行條件變量的選擇優(yōu)化;S3判斷數(shù)組是否合并存儲(chǔ);S4SQL引擎根據(jù)SQL命令以及表中定義的各列的數(shù)據(jù)類型生成MapReduce任務(wù)接收到的數(shù)據(jù)元組,并生成結(jié)果數(shù)據(jù)元組;S5對(duì)于生成的結(jié)果數(shù)據(jù)元組,判斷是否需要將其以數(shù)組文件存儲(chǔ)。本發(fā)明設(shè)計(jì)了一種基于MapReduce的、對(duì)于以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)的分布式處理方法,使得用戶可以使用SQL命令對(duì)以數(shù)組形式存儲(chǔ)的海量數(shù)據(jù)進(jìn)行分布式處理,該方法具有使用簡(jiǎn)單、運(yùn)行高效,可容錯(cuò)的特點(diǎn)。文檔編號(hào)G06F17/30GK102521367SQ201110424530公開(kāi)日2012年6月27日申請(qǐng)日期2011年12月16日優(yōu)先權(quán)日2011年12月16日發(fā)明者楊廣文,耿益鋒,黃小猛申請(qǐng)人:清華大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1