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

  • 相关阅读:
    C++雾中风景16:std::make_index_sequence, 来试一试新的黑魔法吧
    神经网络中的降维和升维方法 (tensorflow & pytorch)
    论文翻译:2020_Residual Acoustic Echo Suppression Based On Efficient Multi-Task Convolutional Neural Network
    论文翻译:2018_Deep Learning for Acoustic Echo Cancellation in Noisy and Double-Talk Scenarios
    十分钟入门Apollo
    SpringSecurity实现OAuth2+JWT
    实现Vue的多页签组件
    原生redis命令
    .NET Core学习笔记(8)——Entity Framework Core之Database First
    函数极限的计算_计算机程序化实现的理论基础
  • 原文地址:https://www.cnblogs.com/jaigejiayou/p/12188216.html
Copyright © 2011-2022 走看看