Hive Tunning 补充 关于bucket
关于 hive 补充
2023-09-14 09:00:25 时间
在前面的几篇文章当中一直有一个概念bucketing不清楚到底是怎么回事。
网友南京-李先森给了他收集的一些资料,如下:
Buckets 对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。如将 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00020
这段描述是说用了bucket之后的,那为什么要用bucket,没说,本着认真负责的态度,我从网上搜索到了Oreilly《Programming.Hive》这本书,然后在里面找到了答案,现在发出来和大家分享一下。
首先回顾一下分区,分区是切分数据的一种比较方便的方法,比较常用的就是按照日期来进行切分,bucket(中文意思就是篮子,可以放鸡蛋,哈哈)其实也是一种切分数据的方法。
假设我们有一张日志表,我们需要按照日期和用户id来分区,目的是为了加快查询谁哪天干了什么,如下:
使用Spark 编码 写入 hive 的过程中 hive字段乱码 [解决方案] 由于元数据中的表结构中包含中文,我在抽取到spark过程中已经解决了一次乱码问题,具体显示为问题????,解决方法是在mysql连接上加参数 spark 字段乱码
首先回顾一下分区,分区是切分数据的一种比较方便的方法,比较常用的就是按照日期来进行切分,bucket(中文意思就是篮子,可以放鸡蛋,哈哈)其实也是一种切分数据的方法。
假设我们有一张日志表,我们需要按照日期和用户id来分区,目的是为了加快查询谁哪天干了什么,如下:
CREATE TABLE weblog (url STRING, source_ip STRING) PARTITIONED BY (dt STRING, user_id INT);但是这里面用user_id去切分的话,就会产生很多很多的分区了,这些分区可大可小,这个数量是文件系统所不能承受的。 在这种情况下,我们既想加快查询速度,又避免出现如此多的小分区,篮子(bucket)就出现了。 具体的用法是:
CREATE TABLE weblog (user_id INT, url STRING, source_ip STRING) PARTITIONED BY (dt STRING) CLUSTERED BY (user_id) INTO 96 BUCKETS;首先按照日期分区,分区结束之后再按照user_id把日志放在96个篮子,这样同一个用户的所有日志都会在同一个篮子里面,并且一个篮子里面有好多用户的日志。 然后我们在插入数据的时候就要注意了,我们一定要设置hive.enforce.bucketing为true。
hive SET hive.enforce.bucketing = true; hive FROM raw_logs INSERT OVERWRITE TABLE weblog PARTITION (dt=2009-02-25) SELECT user_id, url, source_ip WHERE dt=2009-02-25;到此,bucket介绍完毕!
使用Spark 编码 写入 hive 的过程中 hive字段乱码 [解决方案] 由于元数据中的表结构中包含中文,我在抽取到spark过程中已经解决了一次乱码问题,具体显示为问题????,解决方法是在mysql连接上加参数 spark 字段乱码
相关文章
- 关于android的分辨率
- 大数据基础之Hive(5)hive on spark
- Hive Tuning(三) 从查询计划看hive.auto.convert.join的好处
- 关于内容分发网络 CDN 的可靠性和冗余性
- 关于将本地 SAP UI5 应用配置到本地 Fiori Launchpad 的技术实现深入讲解试读版
- 【关于时间序列的ML】项目 2 :使用机器学习预测股票价格
- 关于Ubuntu的Unable to locate package无法更新源问题解决方案
- 【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
- [转]关于OpenGL的绘制上下文
- [深入理解SSD 为SSD编程]:总结—每个程序员都应该了解的关于固态硬盘的知识
- 大数据不就是写sql吗?—— Hive:把sql解析后用MapReduce跑 SparkSQL:把sql解析后用Spark跑,比hive快点 Drill/Impala/Presto:交互式查询OLAP Druid/Kylin:强调预计算,同样是OLAP
- 关于C语言程序