• 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的思想是一样的。

  • 相关阅读:
    我的JAVA之旅(二)初识JAVA
    ORACLE并发处理
    我的JAVA之旅(一)安装配置
    我的JAVA之旅(三) 元素语法
    改变一生的五句话
    InstallShield集成安装MSDE2000最小版本(三) fishout特许授权发布
    IS2009修改XML File 奕婷特许授权发布
    SQL Server中多个表格求出相同列和不同列(答案来自CSDN上SQL专家的回答)
    InstallShield集成安装MSDE2000最小版本(二) fishout特许授权发布
    Installshield停止操作系统进程的代码 IS6及以上版本适用
  • 原文地址:https://www.cnblogs.com/jaigejiayou/p/12188216.html
Copyright © 2020-2023  润新知