zoukankan      html  css  js  c++  java
  • Hive学习笔记2

    数据仓库主要特点:

      面向主题:从不同业务系统抽取同一主题数据

      集成的:通过对独立异构的数据最终归纳到一个主题下需要一系列的转换(ETL)

      非易失的:只能追加不能更改

      时变的:随时间不断变化(存储一段时间的数据,定时删除过时的数据,添加新的数据)

    Hive利用hdfs存储数据,利用mapreduce查询分析数据

    Hive优化:看作mapreduce处理
    1. 排序优化:sort by 效率高于order by,因为order by是全局排序,sort by可以设置mapred.reduce.tasks,多个task并行排序
    2. 分区:使用静态分区,每个分区对应hdfs上的一个目录,减少job和task数量
    3. 使用表连接,解决group by数据倾斜问题
    4. 设置hive.groupby.skewindata=true,那么hive会自动负载均衡,小文件合成大文件
    5. 使用自定义函数UDF,写一个UDF函数,在建表的时候制定好分区
    6. Reduce数据在代码中介于节点数*reduceTask的最大数量的0.95倍到1.75倍
    7. 配置文件中,打开在 map 端的合并
    8. 在库表设计的时候,尽量考虑rowkey 和 columnfamily的特性

    分区作用:防止数据倾斜

    Hive与Hbase区别:

    Hive和关系型数据库区别:

    内部表和外部表的区别:

      创建:外部表需指定location

      加载数据文件:内部表会将数据移动到数据仓库指向的路径,使用load data [local] inpath 'dir/data.txt' into table table_name;才能加载数据到表中,而外部表只需将数据文件上传至外部表统一路径即可自动加载数据

      删除表:内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据

    Hive 有哪些方式保存元数据,各有哪些优缺点。

      1. 存储于 derby数据库,此方法只能开启一个hive客户端,不推荐使用
      2. 存储于mysql数据库中,可以多客户端连接,推荐使用。

     Hive 的 join 有几种方式:

      1. 在reduce端进行join(最常用)

      2. 在 map 端进行 join,使用场景:一张表十分小、一张表很大。 

      3. SemiJoin,semijoin 就是左边连接是 reducejoin 的一种变种,在 map 端过滤掉一些数据,在网络传输过程中,只传输参与连接的数据,减少了 shuffle的网络传输量,其他和 reduce的思想是一样的。

  • 相关阅读:
    [NLP] 语义网络与知识图谱入门(二)
    [NLP] 语义网络与知识图谱入门(一)
    [论文理解] LFFD: A Light and Fast Face Detector for Edge Devices
    [学习笔记] 匈牙利匹配
    [NLP] nlp-lstm-cos -> sin
    [ros] ros入门记录
    [推荐系统] 两种协同过滤
    [NN] Guided Backpropgation 可视化
    [torch] pytorch hook学习
    python高级编程和算法
  • 原文地址:https://www.cnblogs.com/jaigejiayou/p/12188216.html
Copyright © 2011-2022 走看看