中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當(dāng)前位置: 首頁 / 技術(shù)干貨 / 正文
大數(shù)據(jù)開發(fā)為什么必須要學(xué)會(huì)Hive?

2023-02-16

   數(shù)據(jù) hive 開發(fā)

  我們需要知道,所謂的“大數(shù)據(jù)”,指的是非常龐大的數(shù)據(jù)集。在一般的中型企業(yè)中,數(shù)據(jù)的規(guī)模往往能夠輕松的到達(dá)PB的規(guī)模,更不用提大型的企業(yè)了。這些數(shù)據(jù)中蘊(yùn)藏著非常豐富的價(jià)值,而大數(shù)據(jù)開發(fā)人員需要使用各種工具,對(duì)這樣的數(shù)據(jù)集進(jìn)行高效率的處理,從而挖掘出其中蘊(yùn)藏的價(jià)值,讓其發(fā)光發(fā)熱。于是要解決的第一個(gè)問題就是數(shù)據(jù)存儲(chǔ)的問題。龐大的數(shù)據(jù)集,造成了在一臺(tái)機(jī)器上存儲(chǔ)不下的問題,此時(shí)就需要使用分布式的數(shù)據(jù)存儲(chǔ)方式,而HDFS就是來解決這樣的問題而存在的。

  存儲(chǔ)的問題解決了,下面就是對(duì)這些數(shù)據(jù)進(jìn)行計(jì)算、處理的問題了。我們需要對(duì)分布式文件系統(tǒng)上的數(shù)據(jù)文件進(jìn)行計(jì)算,勢(shì)必會(huì)涉及到分布式計(jì)算的思想。但是如果在我們處理每一個(gè)需求的時(shí)候,都去從0開始開發(fā)一個(gè)分布式計(jì)算程序,會(huì)有很多的弊端。首先,對(duì)于開發(fā)人員來說,就是一個(gè)極大的學(xué)習(xí)成本,需要去了解到分布式計(jì)算的底層是如何實(shí)現(xiàn)的。其次,幾乎所有的分布式計(jì)算程序中,涉及到分布式計(jì)算的部分可以是共用的。因此只需要將這部分單獨(dú)的抽離出來即可,沒必要每一次做分布式計(jì)算程序的時(shí)候,都去關(guān)注底層的實(shí)現(xiàn)細(xì)節(jié)。于是就出現(xiàn)了MapReduce,解決了分布式計(jì)算的問題。

  MapReduce的出現(xiàn),確實(shí)在一定程度上簡化了開發(fā)人員的壓力,使得開發(fā)人員只需要將自己的工作重心放在業(yè)務(wù)邏輯的實(shí)現(xiàn)上面即可,不需要考慮到分布式計(jì)算的底層細(xì)節(jié)是如何實(shí)現(xiàn)的。但是,MapReduce的程序其實(shí)還是非常的麻煩的。想要去開發(fā)一個(gè)完整的MapReduce的程序,你必須設(shè)計(jì)至少3個(gè)類: Mapper、Reduer、Driver,而如果還需要處理更加復(fù)雜的數(shù)據(jù)的時(shí)候,可能還得設(shè)計(jì)分區(qū)器、自定義數(shù)據(jù)類型、Combiner、自定義分組等等類型,使得一個(gè)MR的程序非常的復(fù)雜。這還只是一個(gè)Job。如果你的業(yè)務(wù)邏輯比較復(fù)雜,此時(shí)可能還需要有多個(gè)Job串聯(lián),又大大的增加了開發(fā)的難度。于是,在此基礎(chǔ)上,Hive誕生了!

  Apache Hive是Apache旗下的頂級(jí)項(xiàng)目,是在大數(shù)據(jù)開發(fā)中非常非常熱門的組件,也是大數(shù)據(jù)開發(fā)必需要使用到的技術(shù)組件之一。什么是Hive呢?Hive是一個(gè)構(gòu)建在Hadoop上的數(shù)據(jù)倉庫工具(框架),可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射成一張數(shù)據(jù)表,并可以使用類SQL的方式對(duì)這樣的數(shù)據(jù)文件進(jìn)行讀、寫以及管理的操作。有很多人在提到Hive的時(shí)候,都會(huì)把Hive稱為是一個(gè)數(shù)據(jù)庫。但是Hive只是一個(gè)數(shù)據(jù)計(jì)算的工具,并不是一個(gè)數(shù)據(jù)庫!

  而為什么一定要使用到Hive呢?其實(shí)使用Hive可以極大的簡化開發(fā)人員的開發(fā)成本,縮短項(xiàng)目周期。我們以一個(gè)案例為例,來對(duì)比一下MapReduce和Hive來處理同樣的需求的時(shí)候,有什么區(qū)別?

  案例:

  一個(gè)文件中記錄著手機(jī)流量的信息,記錄著手機(jī)號(hào)碼、MAC地址、訪問網(wǎng)址、上行流量、下行流量等信息。需要從這個(gè)文件中查詢出來每一個(gè)手機(jī)號(hào)碼的總上行、總下行、總流量信息。

  import org.apache.hadoop.io.IntWritable;

  import org.apache.hadoop.io.Text;

  import org.apache.hadoop.mapreduce.Reducer;

  import java.io.IOException;

  /**

  * @author 千鋒大數(shù)據(jù)教研院 - 章魚哥

  * @company 北京千鋒互聯(lián)科技有限公司

  */

  public class PhoneFlowReducer extends Reducer<text, text="" text,="" phoneflowbean,=""> {

  @Override

  protected void reduce(Text key, Iterablevalues, Context context) throws IOException, InterruptedException {

  // 定義一個(gè)變量,用來統(tǒng)計(jì)總流量

  int total = 0;

  int total_up = 0;

  int total_down = 0;

  // 遍歷每一個(gè)手機(jī)號(hào)碼對(duì)應(yīng)的一條流量信息

  for (PhoneFlowBean value : values) {

  total += value.getTotalFlow();

  total_up += value.getUpFlow();

  total_down += value.getDownFlow();

  }

  String res = String.format("%d\t%d\t%d", total_up, total_down, total);

  context.write(key, new Text(res));

  }

  }

  import org.apache.hadoop.io.LongWritable;

  import org.apache.hadoop.io.Text;

  import org.apache.hadoop.mapreduce.Mapper;

  import java.io.IOException;

  /**

  * @author 千鋒大數(shù)據(jù)教研院 - 章魚哥

  * @company 北京千鋒互聯(lián)科技有限公司

  */

  public class PhoneFlowMapper extends Mapper<longwritable, text,="" phoneflowbean=""> {

  @Override

  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

  String[] props = value.toString().split("\t");

  // 拆出手機(jī)號(hào)碼

  String phoneNumber = props[1];

  // 拆出上行流量

  int upFlow = Integer.parseInt(props[8]);

  // 拆出下行流量

  int downFlow = Integer.parseInt(props[9]);

  PhoneFlowBean bean = new PhoneFlowBean(phoneNumber, upFlow, downFlow);

  context.write(new Text(phoneNumber), bean);

  }

  }

  import org.apache.hadoop.io.Text;

  import org.apache.hadoop.mapreduce.Reducer;

  import java.io.IOException;

  /**

  * @author 千鋒大數(shù)據(jù)教研院 - 章魚哥

  * @company 北京千鋒互聯(lián)科技有限公司

  */

  public class PhoneFlowReducer extends Reducer<text, text="" text,="" phoneflowbean,=""> {

  @Override

  protected void reduce(Text key, Iterablevalues, Context context) throws IOException, InterruptedException {

  // 定義一個(gè)變量,用來統(tǒng)計(jì)總流量

  int total = 0;

  int total_up = 0;

  int total_down = 0;

  // 遍歷每一個(gè)手機(jī)號(hào)碼對(duì)應(yīng)的一條流量信息

  for (PhoneFlowBean value : values) {

  total += value.getTotalFlow();

  total_up += value.getUpFlow();

  total_down += value.getDownFlow();

  }

  String res = String.format("%d\t%d\t%d", total_up, total_down, total);

  context.write(key, new Text(res));

  }

  }

  import org.apache.hadoop.conf.Configuration;

  import org.apache.hadoop.fs.Path;

  import org.apache.hadoop.io.IntWritable;

  import org.apache.hadoop.io.Text;

  import org.apache.hadoop.mapreduce.Job;

  import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

  import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

  import java.io.IOException;

  /**

  * @author 千鋒大數(shù)據(jù)教研院 - 章魚哥

  * @company 北京千鋒互聯(lián)科技有限公司

  */

  public class PhoneFlowDriver {

  public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {

  Configuration configuration = new Configuration();

  configuration.set("mapreduce.framework.name", "local");

  Job job = Job.getInstance(configuration);

  job.setMapperClass(PhoneFlowMapper.class);

  job.setReducerClass(PhoneFlowReducer.class);

  job.setJarByClass(PhoneFlowDriver.class);

  job.setMapOutputKeyClass(Text.class);

  job.setMapOutputValueClass(PhoneFlowBean.class);

  job.setOutputKeyClass(Text.class);

  job.setOutputValueClass(Text.class);

  FileInputFormat.setInputPaths(job, new Path("file/HTTP_20130313143750.dat"));

  FileOutputFormat.setOutputPath(job, new Path("file/out2"));

  System.exit(job.waitForCompletion(true) ? 0 : -1);

  }

  }

  看到了吧,用MapReduce實(shí)現(xiàn)上述需求的時(shí)候,需要設(shè)計(jì)至少3個(gè)類:Mapper、Reducer、Driver,有些復(fù)雜的需求還需要自定義序列化類型,例如上述的PhoneFlowBean類。那么使用Hive如何解決這個(gè)需求呢?

  # 建表

  CREATE TABLE flow(

  id string COMMENT 'this is id column',

  phonenumber string,

  mac string,

  ip string,

  url string,

  urltype string,

  uppacket int,

  downpacket int,

  upflow int,

  downflow int,

  issuccess int

  )

  COMMENT 'this is log table'

  ROW FORMAT DELIMITED

  FIELDS TERMINATED BY '\t'

  LINES TERMINATED BY '\n'

  stored as textfile;

  # 查詢結(jié)果

  select

  phonenumber,

  sum(upflow) total_up,

  sum(downflow) total_down,

  sum(upflow+downflow) total

  from

  flow

  group by

  phonenumber;

  看到了吧,使用Hive來做同樣的需求,就是這么簡單!對(duì)HDFS上的結(jié)構(gòu)化的數(shù)據(jù)文件進(jìn)行表的映射,然后一條SQL就可以實(shí)現(xiàn)同樣的需求了!

  因此,當(dāng)我們需要處理到非常復(fù)雜的需求的時(shí)候,使用Hive來進(jìn)行數(shù)據(jù)的處理將會(huì)變得非常的簡單,可以極大的減少開發(fā)人員的開發(fā)壓力,縮短開發(fā)人員的開發(fā)周期!

好程序員公眾號(hào)

  • · 剖析行業(yè)發(fā)展趨勢(shì)
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開班動(dòng)態(tài)

More+
  • HTML5大前端 <高端班>

    開班時(shí)間:2021-04-12(深圳)

    開班盛況

    開班時(shí)間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時(shí)間:2021-03-22(杭州)

    開班盛況

    開班時(shí)間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時(shí)間:2021-05-10(北京)

    開班盛況

    開班時(shí)間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2020-09-21(上海)

    開班盛況
  • 云計(jì)算開發(fā) <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            国产在线一区观看| 亚洲乱码日产精品bd| 一区二区不卡在线视频 午夜欧美不卡在| 婷婷国产在线综合| 国产精品2024| 欧美电影一区二区| 亚洲美女精品一区| 国产成人精品影视| 欧美成人一区二区三区在线观看| 亚洲精品国产无天堂网2021| 国产激情一区二区三区| 欧美一区二区私人影院日本| 一二三区精品视频| 不卡的电影网站| 国产午夜亚洲精品理论片色戒| 日韩精品久久久久久| 在线影院国内精品| 最新国产精品久久精品| 国产精品123| 亚洲精品一区二区三区影院| 日韩av午夜在线观看| 欧美亚洲高清一区二区三区不卡| 国产精品国产三级国产三级人妇| 精品一区二区三区视频 | 亚洲中国最大av网站| 成人午夜短视频| www国产精品av| 久久99深爱久久99精品| 制服视频三区第一页精品| 亚洲一区二区在线观看视频| 91老司机福利 在线| 亚洲欧洲99久久| av亚洲精华国产精华精华| 国产欧美日韩激情| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 夜夜嗨av一区二区三区网页| 97精品视频在线观看自产线路二| 亚洲国产精品av| 国产aⅴ精品一区二区三区色成熟| 久久嫩草精品久久久久| 国产一级精品在线| 久久青草国产手机看片福利盒子| 狠狠色狠狠色合久久伊人| 26uuu另类欧美| 激情综合色综合久久| 久久久综合视频| 国产精品亚洲第一区在线暖暖韩国| 欧美精品一区男女天堂| 国产精品综合久久| 国产欧美一区二区三区沐欲| 成人综合婷婷国产精品久久免费| 国产精品伦理一区二区| 91一区一区三区| 一区二区在线观看免费| 欧美日韩三级在线| 蜜臀av亚洲一区中文字幕| 精品成人在线观看| 福利一区在线观看| 亚洲人123区| 欧美日韩一二区| 日韩 欧美一区二区三区| 欧美zozozo| 粉嫩aⅴ一区二区三区四区五区| 国产精品久久久久久久久晋中 | 国内一区二区在线| 国产视频一区在线观看| gogogo免费视频观看亚洲一| 一区二区三区不卡视频在线观看| 欧美日韩国产一区| 九九九精品视频| 欧美国产精品久久| 在线观看日韩电影| 日韩精品欧美成人高清一区二区| 精品久久久网站| www.日韩在线| 香港成人在线视频| 久久综合丝袜日本网| 99视频精品在线| 天堂在线亚洲视频| 久久久久久久性| 色噜噜狠狠成人中文综合| 男人操女人的视频在线观看欧美 | 日本丶国产丶欧美色综合| 日韩av中文字幕一区二区三区| 久久久久久久久一| 在线视频欧美精品| 九九视频精品免费| 亚洲精品自拍动漫在线| 日韩一区二区三区精品视频| 国产精品99久| 亚洲精品久久久久久国产精华液| 欧美一区在线视频| 本田岬高潮一区二区三区| 日韩国产一二三区| 国产女人18毛片水真多成人如厕| 在线亚洲高清视频| 国产最新精品免费| 亚洲国产精品久久不卡毛片| 26uuu国产日韩综合| 在线观看日韩毛片| 国产mv日韩mv欧美| 日韩国产欧美三级| √…a在线天堂一区| 日韩美女视频在线| 在线精品视频免费播放| 国产福利不卡视频| 首页国产丝袜综合| 中文字幕一区日韩精品欧美| 欧美电影免费观看高清完整版在| 色国产精品一区在线观看| 韩国三级中文字幕hd久久精品| 一二三四社区欧美黄| 日本一区二区三区在线不卡| 欧美一区二区在线免费观看| 91麻豆国产在线观看| 国内精品在线播放| 日韩和的一区二区| 一区二区在线免费| 国产精品久久久久一区二区三区| 欧美v日韩v国产v| 欧美日韩高清一区二区不卡| 9i看片成人免费高清| 国产一区二区日韩精品| 日韩成人免费在线| 亚洲午夜国产一区99re久久| 中文字幕中文字幕一区| 国产无遮挡一区二区三区毛片日本| 在线播放国产精品二区一二区四区 | 亚洲蜜臀av乱码久久精品蜜桃| 久久精品一区二区| 日韩精品一区二| 欧美一区二区三区视频| 欧美日韩精品一区二区三区| 色综合天天综合色综合av| 成人av电影在线| 成人性生交大合| 国产成人亚洲综合色影视| 久久99最新地址| 美美哒免费高清在线观看视频一区二区| 亚洲一区在线观看免费观看电影高清| 国产精品国产三级国产普通话蜜臀| 国产校园另类小说区| 亚洲精品在线免费观看视频| 欧美成人精品高清在线播放| 欧美一级日韩不卡播放免费| 91精品综合久久久久久| 欧美丰满美乳xxx高潮www| 欧美日韩一区二区三区视频| 在线观看日韩高清av| 欧美亚洲一区二区在线观看| 欧洲另类一二三四区| 欧美性受xxxx| 欧美日本精品一区二区三区| 欧美日韩精品一区二区| 3d成人h动漫网站入口| 91精品在线免费| 欧美zozo另类异族| 欧美刺激午夜性久久久久久久| 欧美sm美女调教| 久久综合色8888| 久久精品人人爽人人爽| 国产女人18毛片水真多成人如厕| 国产女人18水真多18精品一级做| 欧美激情一区不卡| 中文字幕一区二区三区四区| 亚洲丝袜另类动漫二区| 一区二区在线看| 婷婷久久综合九色综合伊人色| 日本亚洲视频在线| 国内精品在线播放| 国产91精品露脸国语对白| 成人精品一区二区三区中文字幕| av不卡一区二区三区| 欧美在线啊v一区| 欧美一区二区精品在线| 亚洲精品在线网站| 国产精品久久久久四虎| 亚洲综合一二区| 琪琪一区二区三区| 国产激情一区二区三区桃花岛亚洲| 国产成人在线色| 一道本成人在线| 欧美精品三级在线观看| 精品嫩草影院久久| 国产精品二三区| 婷婷夜色潮精品综合在线| 精品中文字幕一区二区小辣椒 | 亚洲无人区一区| 久久精品久久久精品美女| 高清国产一区二区三区| 91国偷自产一区二区三区观看 | 在线观看日韩一区| 日韩欧美一二三区| 国产精品天干天干在观线| 一区二区高清视频在线观看| 久久精品国产亚洲aⅴ | 日本怡春院一区二区| 国产精品一二三区在线| 欧美最猛黑人xxxxx猛交| 日韩精品最新网址|