• Python+大数据-知行教育(五)-意向用户主题看板_增量流程


    Python+大数据-知行教育(五)-意向用户主题看板_增量流程

    6. 意向用户主题看板_增量流程

    6.1 数据采集(拉链表)

    高清图, 查看图片目录

    image-20221104170854483

    7. hive的索引

    ​ 索引的作用: 加快查询的效率

    为什么索引可以提升查询效率呢?

    image-20221104170914595

    ​ hive索引是在 分区 分桶优化基础上, 又提供一种新的优化手段, 如果分区 和分桶受限, 可以尝试使用索引的方式来优化处理

    hive提供了三种索引:

    • 原始索引
    • row group index(行组索引)
    • bloom filter index(布隆过滤索引)

    7.1 hive的原始索引

    ​ 结论: 此索引已经不再使用, 在hive3.0以上, 彻底不支持

    	hive的原始索引, 可以针对表中某一列或者某几列构建索引, 构建之后, 当查询的时候使用到索引字段, 可以帮助提升一定效率
    	弊端: 
    		hive原始索引, 不会自动更新, 每一次对表中数据进行处理后, 都需要进行重建索引, 而这个效率是比较差, 而且整体效率的提升,相对比较有限
    
    • 1
    • 2
    • 3

    7.2 row group index(行组索引)

    image-20221104170936722

    条件:
    	1) 要求表必须是ORC存储格式
    	2) 需要对那个字段进行索引, 必须对这个字段进行排序, 否则索引意义不大
    	3) 在创建表的时候, 必须开启行组索引: ’orc.create.index’=’true’
    	4) 主要应用在 < > = 场景中, 主要针对数值类型数据
    
    建表操作: 
    CREATE TABLE lxw1234_orc2(
        ....
    ) stored AS ORC
    TBLPROPERTIES
    (
        'orc.compress'='SNAPPY',
    --     开启行组索引
        'orc.create.index'='true'
    )
    
    插入数据:
        SELECT CAST(siteid AS INT) AS id,
        pcid
        FROM lxw1234_text
    --     插入的数据保持排序
        DISTRIBUTE BY id sort BY id;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    7.3 bloom filter index(布隆过滤索引)

    image-20221104170957084

    条件:
    	1) 必须是ORC类型的表
    	2) 需要按照哪一个字段进行等值连接, 需要对这个字段构建布隆索引
    	3) 仅适合做等值连接, 不局限于数据类型
    	4) 在建表的时候, 必须指定为那些字段开启: ”orc.bloom.filter.columns”=”pcid,字段2..”
    	
    如何使用:
    CREATE TABLE lxw1234_orc2 (
       ....
    ) stored AS ORC
    TBLPROPERTIES
    (
        'orc.compress'='SNAPPY',
        'orc.create.index'='true',
    --     pcid字段开启BloomFilter索引
        "orc.bloom.filter.columns"="pcid"
    )
    
    插入数据: 
    SELECT CAST(siteid AS INT) AS id,
    pcid
    FROM lxw1234_text
    DISTRIBUTE BY id sort BY id;
    
    
    使用索引:
    SET hive.optimize.index.filter=true --开启 hive的自动使用索引
    SELECT COUNT(1) FROM lxw1234_orc1 WHERE id >= 0 AND id <= 1000   (行组索引)
    AND pcid IN ('0005E26F0DCCDB56F9041C','A'); (布隆过滤索引)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    注意 如果要使用hive的索引, 必须开启hive自动使用索引

    SET hive.optimize.index.filter=true --开启 hive的自动使用索引  
    
    当然也可以将这个配置, 直接配置到cm的hive的配置窗口中, 进行统一配置
    
    • 1
    • 2
    • 3

    在生产中这些索引如何选择呢?

    1) 对于行组索引, 建议是常开即可
    	在插入数据, 如果不明确对那个字段使用行组索引, 可以任意的插入, 在条件合适情况下, 也在使用行组索引
    	
    2) 布隆过滤索引:  主要将那些用于 等值连接的字段开启索引即可
    	一般主要指的是 join关联字段 以及清洗字段
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    关于Java已死,看看国外开发者怎么说的
    函数定义方式3种
    C++中的extern “C“的作用
    ZZNUOJ_用C语言编写程序实现1218:反转a+b(附完整源码)
    Jedis操作Redis
    C++17结构化绑定
    一幅长文细学Vue(六)——组件高级(下)
    阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具
    【七】redis缓存与数据库数据一致性
    项目能跑起来,一打开浏览器运行就报错
  • 原文地址:https://blog.csdn.net/qq_45588318/article/details/127692874