版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
大數(shù)據(jù)基礎(chǔ)課程設(shè)計報告一、項目簡介:使用hadoop中的hive、mapreduce以及HBASE對網(wǎng)上的一個搜狗五百萬的數(shù)進行了一個比較實際的數(shù)據(jù)分析。搜狗五百萬數(shù)據(jù),是通過解決后的搜狗搜索引擎生產(chǎn)數(shù)據(jù),具有真實性,大數(shù)據(jù)性,可以較好的滿足分布式計算應(yīng)用開發(fā)課程設(shè)計的數(shù)據(jù)規(guī)定。搜狗數(shù)據(jù)的數(shù)據(jù)格式為:訪問時間\t用戶ID\t[查詢詞]\t該URL在返回結(jié)果中的排名\t用戶點擊的順序號\t用戶點擊的URL。其中,用戶ID是根據(jù)用戶使用瀏覽器訪問搜索引擎時的Cookie信息自動賦值,即同一次使用瀏覽器輸入的不同查詢相應(yīng)同一個用戶ID。二、操作規(guī)定1.將原始數(shù)據(jù)加載到HDFS平臺。2.將原始數(shù)據(jù)中的時間字段拆分并拼接,添加年、月、日、小時字段。3.將解決后的數(shù)據(jù)加載到HDFS平臺。4.以下操作分別通過MR和Hive實現(xiàn)。查詢總條數(shù)非空查詢條數(shù)無反復(fù)總條數(shù)獨立UID總數(shù)查詢頻度排名(頻度最高的前50詞)查詢次數(shù)大于2次的用戶總數(shù)查詢次數(shù)大于2次的用戶占比Rank在10以內(nèi)的點擊次數(shù)占比直接輸入URL查詢的比例查詢搜索過”仙劍奇?zhèn)b傳“的uid,并且次數(shù)大于35.將4每環(huán)節(jié)生成的結(jié)果保存到HDFS中。6.將5生成的文獻通過JavaAPI方式導(dǎo)入到HBase(一張表)。7.通過HBaseshell命令查詢6導(dǎo)出的結(jié)果。三、實驗流程將原始數(shù)據(jù)加載到HDFS平臺將原始數(shù)據(jù)中的時間字段拆分并拼接,添加年、月、日、小時字段編寫1個腳本sogou-log-extend.sh,其中sogou-log-extend.sh的內(nèi)容為:#!/bin/bash#infile=/root/sogou.500w.utf8infile=$1#outfile=/root/filesogou.500w.utf8.extoutfile=$2awk-F'\t''{print$0"\t"substr($1,0,4)"年\t"substr($1,5,2)"月\t"substr($1,7,2)"日\t"substr($1,8,2)"hour"}'$infile>$outfile解決腳本文獻:bashsogou-log-extend.shsogou.500w.utf8sogou.500w.utf8.ext結(jié)果為:將解決后的數(shù)據(jù)加載到HDFS平臺hadoopfs-putsogou.500w.utf8.ext/以下操作分別通過MR和Hive實現(xiàn)Ⅰ.hive實現(xiàn)1.查看數(shù)據(jù)庫:showdatabases;2.創(chuàng)建數(shù)據(jù)庫:createdatabasesogou;3.使用數(shù)據(jù)庫:usesogou;4.查看所有表:showtables;5.創(chuàng)建sougou表:Createtablesogou(timestring,uuidstring,namestring,num1int,num2int,urlstring)Rowformatdelimitedfieldsterminatedby'\t';6.將本地數(shù)據(jù)導(dǎo)入到Hive表里:Loaddatalocalinpath'/root/sogou.500w.utf8'intotablesogou;7.查看表信息:descsogou;查詢總條數(shù)selectcount(*)fromsogou;非空查詢條數(shù)selectcount(*)fromsogouwherenameisnotnullandname!='';無反復(fù)總條數(shù)selectcount(*)from(select*fromsogougroupbytime,num1,num2,uuid,name,urlhavingcount(*)=1)a;獨立UID總數(shù)selectcount(distinctuuid)fromsogou;查詢頻度排名(頻度最高的前50詞)selectname,count(*)aspdfromsogougroupbynameorderbypddesclimit50;(6)查詢次數(shù)大于2次的用戶總數(shù)selectcount(a.uuid)from(selectuuid,count(*)ascntfromsogougroupbyuuidhavingcnt>2)a;(7)查詢次數(shù)大于2次的用戶占比selectcount(*)from(selectuuid,count(*)ascntfromsogougroupbyuuidhavingcnt>2)a;Rank在10以內(nèi)的點擊次數(shù)占比selectcount(*)fromsogouwherenum1<11;直接輸入URL查詢的比例selectcount(*)fromsogouwhereurllike'%www%';查詢搜索過”仙劍奇?zhèn)b傳“的uid,并且次數(shù)大于3selectuuid,count(*)asuufromsogouwherename='仙劍奇?zhèn)b傳'groupbyuuidhavinguu>3;Ⅱ.MapReduce實現(xiàn)(import的各種包省略)查詢總條數(shù)publicclassMRCountAll{publicstaticIntegeri=0;publicstaticbooleanflag=true;publicstaticclassCountAllMapextendsMapper<Object,Text,Text,Text>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,Text>.Contextcontext)throwsIOException,InterruptedException{i++;}}publicstaticvoidruncount(StringInputpath,StringOutpath){Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=null;try{job=Job.getInstance(conf,"count");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}job.setJarByClass(MRCountAll.class);job.setMapperClass(CountAllMap.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);try{FileInputFormat.addInputPath(job,newPath(Inputpath));}catch(IllegalArgumentExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}FileOutputFormat.setOutputPath(job,newPath(Outpath));try{job.waitForCompletion(true);}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}publicstaticvoidmain(String[]args)throwsException{runcount("/sogou/data/sogou.500w.utf8","/sogou/data/CountAll");System.out.println("總條數(shù):"+i);}}非空查詢條數(shù)publicclassCountNotNull{publicstaticStringStr="";publicstaticinti=0;publicstaticbooleanflag=true;publicstaticclasswyMapextendsMapper<Object,Text,Text,IntWritable>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{String[]values=value.toString().split("\t");if(!values[2].equals(null)&&values[2]!=""){context.write(newText(values[1]),newIntWritable(1));i++;}}}publicstaticvoidrun(StringinputPath,StringoutputPath){Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=null;try{job=Job.getInstance(conf,"countnotnull");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}assertjob!=null;job.setJarByClass(CountNotNull.class);job.setMapperClass(wyMap.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);try{FileInputFormat.addInputPath(job,newPath(inputPath));}catch(IllegalArgumentExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}try{FileOutputFormat.setOutputPath(job,newPath(outputPath));job.waitForCompletion(true);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(InterruptedExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){run("/sogou/data/sogou.500w.utf8","/sogou/data/CountNotNull");System.out.println("非空條數(shù):"+i);}}無反復(fù)總條數(shù)publicclassCountNotRepeat{publicstaticinti=0;publicstaticclassNotRepeatMapextendsMapper<Object,Text,Text,Text>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,Text>.Contextcontext)throwsIOException,InterruptedException{Stringtext=value.toString();String[]values=text.split("\t");Stringtime=values[0];Stringuid=values[1];Stringname=values[2];Stringurl=values[5];context.write(newText(time+uid+name+url),newText("1"));}}publicstaticclassNotRepeatReducextendsReducer<Text,IntWritable,Text,IntWritable>{@Overrideprotectedvoidreduce(Textkey,Iterable<IntWritable>values,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{i++;context.write(newText(key.toString()),newIntWritable(i));}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=null;try{job=Job.getInstance(conf,"countnotnull");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}assertjob!=null;job.setJarByClass(CountNotRepeat.class);job.setMapperClass(NotRepeatMap.class);job.setReducerClass(NotRepeatReduc.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);try{FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));}catch(IllegalArgumentExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}try{FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountNotRepeat"));job.waitForCompletion(true);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("無反復(fù)總條數(shù)為:"+i);}}獨立UID總數(shù)publicclassCountNotMoreUid{publicstaticinti=0;publicstaticclassUidMapextendsMapper<Object,Text,Text,Text>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,Text>.Contextcontext)throwsIOException,InterruptedException{Stringtext=value.toString();String[]values=text.split("\t");Stringuid=values[1];context.write(newText(uid),newText("1"));}}publicstaticclassUidReducextendsReducer<Text,IntWritable,Text,IntWritable>{@Overrideprotectedvoidreduce(Textkey,Iterable<IntWritable>values,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{i++;context.write(newText(key.toString()),newIntWritable(i));}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=null;try{job=Job.getInstance(conf,"countnotnull");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}assertjob!=null;job.setJarByClass(CountNotNull.class);job.setMapperClass(UidMap.class);job.setReducerClass(UidReduc.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);try{FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));}catch(IllegalArgumentExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}try{FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountNotMoreUid"));job.waitForCompletion(true);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("獨立UID條數(shù):"+i);}}查詢頻度排名(頻度最高的前50詞)publicclassCountTop50{publicstaticclassTopMapperextendsMapper<LongWritable,Text,Text,LongWritable>{Texttext=newText();@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{String[]line=value.toString().split("\t");Stringkeys=line[2];text.set(keys);context.write(text,newLongWritable(1));}}publicstaticclassTopReducerextendsReducer<Text,LongWritable,Text,LongWritable>{Texttext=newText();TreeMap<Integer,String>map=newTreeMap<Integer,String>();@Overrideprotectedvoidreduce(Textkey,Iterable<LongWritable>value,Contextcontext)throwsIOException,InterruptedException{intsum=0;//key出現(xiàn)次數(shù)for(LongWritableltext:value){sum+=ltext.get();}map.put(sum,key.toString());//去前50條數(shù)據(jù)if(map.size()>50){map.remove(map.firstKey());}}@Overrideprotectedvoidcleanup(Contextcontext)throwsIOException,InterruptedException{for(Integercount:map.keySet()){context.write(newText(map.get(count)),newLongWritable(count));}}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=Job.getInstance(conf,"count");job.setJarByClass(CountTop50.class);job.setJobName("Five");job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.class);job.setMapperClass(TopMapper.class);job.setReducerClass(TopReducer.class);FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountTop50"));job.waitForCompletion(true);}}查詢次數(shù)大于2次的用戶總數(shù)publicclassCountQueriesGreater2{publicstaticinttotal=0;publicstaticclassMyMaperextendsMapper<Object,Text,Text,IntWritable>{protectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{String[]str=value.toString().split("\t");Textword;IntWritableone=newIntWritable(1);word=newText(str[1]);context.write(word,one);}}publicstaticclassMyReducerextendsReducer<Text,IntWritable,Text,IntWritable>{@Overrideprotectedvoidreduce(Textarg0,Iterable<IntWritable>arg1,Reducer<Text,IntWritable,Text,IntWritable>.Contextarg2)throwsIOException,InterruptedException{//arg0是一個單詞arg1是相應(yīng)的次數(shù)intsum=0;for(IntWritablei:arg1){sum+=i.get();}if(sum>2){total=total+1;}//arg2.write(arg0,newIntWritable(sum));}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");//1.實例化一個JobJobjob=Job.getInstance(conf,"six");//2.設(shè)立mapper類job.setMapperClass(MyMaper.class);//3.設(shè)立Combiner類不是必須的//job.setCombinerClass(MyReducer.class);//4.設(shè)立Reducer類job.setReducerClass(MyReducer.class);//5.設(shè)立輸出key的數(shù)據(jù)類型job.setOutputKeyClass(Text.class);//6.設(shè)立輸出value的數(shù)據(jù)類型job.setOutputValueClass(IntWritable.class);//設(shè)立通過哪個類查找job的Jar包job.setJarByClass(CountQueriesGreater2.class);//7.設(shè)立輸入途徑FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));//8.設(shè)立輸出途徑FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountQueriesGreater2"));//9.執(zhí)行該作業(yè)job.waitForCompletion(true);System.out.println("查詢次數(shù)大于2次的用戶總數(shù):"+total+"條");}}查詢次數(shù)大于2次的用戶占比publicclassCountQueriesGreaterPro{publicstaticinttotal1=0;publicstaticinttotal2=0;publicstaticclassMyMaperextendsMapper<Object,Text,Text,IntWritable>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{total2++;String[]str=value.toString().split("\t");Textword;IntWritableone=newIntWritable(1);word=newText(str[1]);context.write(word,one);//執(zhí)行完畢后就是一個單詞相應(yīng)一個value(1)}}publicstaticclassMyReducerextendsReducer<Text,IntWritable,Text,IntWritable>{@Overrideprotectedvoidreduce(Textarg0,Iterable<IntWritable>arg1,Reducer<Text,IntWritable,Text,IntWritable>.Contextarg2)throwsIOException,InterruptedException{//arg0是一個單詞arg1是相應(yīng)的次數(shù)intsum=0;for(IntWritablei:arg1){sum+=i.get();}if(sum>2){total1++;}arg2.write(arg0,newIntWritable(sum));}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{System.out.println("sevenbegin");Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");//1.實例化一個JobJobjob=Job.getInstance(conf,"seven");//2.設(shè)立mapper類job.setMapperClass(MyMaper.class);//3.設(shè)立Combiner類不是必須的//job.setCombinerClass(MyReducer.class);//4.設(shè)立Reducer類job.setReducerClass(MyReducer.class);//5.設(shè)立輸出key的數(shù)據(jù)類型job.setOutputKeyClass(Text.class);//6.設(shè)立輸出value的數(shù)據(jù)類型job.setOutputValueClass(IntWritable.class);//設(shè)立通過哪個類查找job的Jar包job.setJarByClass(CountQueriesGreaterPro.class);//7.設(shè)立輸入途徑FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));//8.設(shè)立輸出途徑FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountQueriesGreaterPro"));//9.執(zhí)行該作業(yè)job.waitForCompletion(true);System.out.println("total1="+total1+"\ttotal2="+total2);floatpercentage=(float)total1/(float)total2;System.out.println("查詢次數(shù)大于2次的用戶占比為:"+percentage*100+"%");System.out.println("over");}}Rank在10以內(nèi)的點擊次數(shù)占比publicclassCountRank{publicstaticintsum1=0;publicstaticintsum2=0;publicstaticclassMyMapperextendsMapper<Object,Text,Text,Text>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,Text>.Contextcontext)throwsIOException,InterruptedException{sum2++;String[]str=value.toString().split("\t");intrank=Integer.parseInt(str[3]);if(rank<11){sum1=sum1+1;}}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=Job.getInstance(conf,"eight");job.setMapperClass(MyMapper.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);job.setJarByClass(CountRank.class);FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountRank"));job.waitForCompletion(true);System.out.println("sum1="+sum1+"\tsum2="+sum2);floatpercentage=(float)sum1/(float)sum2;System.out.println("Rank在10以內(nèi)的點擊次數(shù)占比:"+percentage*100+"%");}}直接輸入URL查詢的比例publicclassCountURL{publicstaticintsum1=0;publicstaticintsum2=0;publicstaticclassMyMapperextendsMapper<Object,Text,Text,Text>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,Text>.Contextcontext)throwsIOException,InterruptedException{String[]str=value.toString().split("\t");Patternp=Ppile("www");Matchermatcher=p.matcher(str[2]);matcher.find();try{if(matcher.group()!=null)sum1++;sum2++;}catch(Exceptione){sum2++;}}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=Job.getInstance(conf,"nine");job.setMapperClass(MyMapper.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);job.setJarByClass(CountURL.class);FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountURL"));job.waitForCompletion(true);System.out.println("sum1="+sum1+"\tsum2="+sum2);floatpercentage=(float)sum1/(float)sum2;System.out.println("直接用url'%www%'查詢的用戶占比:"+percentage*100+"%");}}查詢搜索過”仙劍奇?zhèn)b傳“的uid,并且次數(shù)大于3publicclassCountUidGreater3{publicstaticStringStr="";publicstaticinti=0;publicstaticclassMapextendsMapper<Object,Text,Text,IntWritable>{@Overrideprotectedvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{String[]values=value.toString().split("\t");Stringpattern="仙劍奇?zhèn)b傳";if(values[2].equals(pattern)){context.write(newText(values[1]),newIntWritable(1));}}}publicstaticclassReduceextendsReducer<Text,IntWritable,Text,IntWritable>{@Overrideprotectedvoidreduce(Textkey,Iterable<IntWritable>value,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{intsum=0;for(IntWritablev:value){sum=sum+v.get();}if(sum>3){Str=Str+key.toString()+"\n";i++;}}}publicstaticvoidmain(String[]args){Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://0:9000");Jobjob=null;try{job=Job.getInstance(conf,"count");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}job.setJarByClass(CountUidGreater3.class);job.setMapperClass(Map.class);job.setReducerClass(Reduce.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);try{FileInputFormat.addInputPath(job,newPath("/sogou/data/sogou.500w.utf8"));}catch(IllegalArgumentExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}try{FileOutputFormat.setOutputPath(job,newPath("/sogou/data/CountUidGreater3"));job.waitForCompletion(true);}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}System.out.println("i:"+i);System.out.println(Str);}}將4每環(huán)節(jié)生成的結(jié)果保存到HDFS中使用INSERTOVERWRITEDIRECTORY可完畢操作例如:將5生成的文獻通過JavaAPI方式導(dǎo)入到HBase(一張表)將中5生成的文獻通過JavaAPI方式導(dǎo)入到HBase(一張表)publicclassHBaseImport{//reduce輸出的表名privatestaticStringtableName="test";//初始化連接staticConfigurationconf=null;static{conf=HBaseConfiguration.create();conf.set("hbase.rootdir","hdfs://0:9000/hbase");conf.set("hbase.master","hdfs://0:60000");conf.set("perty.clientPort","2181");conf.set("hbase.zookeeper.quorum","master,slave1,slave2");conf.set(TableOutputFormat.OUTPUT_TABLE,tableName);}publicstaticclassBatchMapperextendsMapper<LongWritable,Text,LongWritable,Text>{protectedvoidmap(LongWritablekey,Textvalue,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美容院加盟合作協(xié)議書(五年有效期)
- 2025年煙草產(chǎn)品采購合同模板3篇
- 二零二五年度地鐵隧道鋼筋供應(yīng)及安裝服務(wù)合同2篇
- 2025年度國家級科研項目合作勞務(wù)派遣管理協(xié)議3篇
- 二零二五年度文化產(chǎn)業(yè)園開發(fā)與運營合同文化產(chǎn)業(yè)3篇
- 2025年度云計算服務(wù)100%股權(quán)轉(zhuǎn)讓合同3篇
- 代運營服務(wù)商2025年度店鋪經(jīng)營狀況評估合同2篇
- 2025年度零擔(dān)運輸合同供應(yīng)鏈金融合作合同4篇
- 年度ZNO基變阻器材料產(chǎn)業(yè)分析報告
- 年度汽油發(fā)動機電控裝置市場分析及競爭策略分析報告
- 注射泵管理規(guī)范及工作原理
- 山東省濟南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 大唐電廠采購合同范例
- 國潮風(fēng)中國風(fēng)2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 2024年中考語文名句名篇默寫分類匯編(解析版全國)
- 新煤礦防治水細(xì)則解讀
- 醫(yī)院領(lǐng)導(dǎo)班子集體議事決策制度
- 解讀2024年《學(xué)紀(jì)、知紀(jì)、明紀(jì)、守紀(jì)》全文課件
評論
0/150
提交評論