黑洞

这里藏着一些独特的想法

0%

概述

Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键。

Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量。

在可以预见到分区数据非常庞大的情况下,分桶和索引常常是优于分区的。而分桶由于SMB Join对关联键要求严格,所以并不是总能生效。

阅读全文 »

explode 函数

简介

explode函数属于UDTF函数(表生成),输入一行,输出多行。从英文直译过来是“爆炸”的意思,因此俗称爆炸函数。

语法和效果

explode函数接收map或者array类型的数据作为参数。在生成的表中,每个元素将单独成为一行数据。

  • explode(array)array列表里的每个元素生成一行;
  • explode(map)map里的每一对元素作为一行,其中key为一列,value为一列;
阅读全文 »

概述

数据倾斜在MapReduce计算框架中经常发生。通俗理解,该现象指的是在整个计算过程中,大量相同的key被分配到了同一个任务上,造成“一个人累死、其他人闲死”的状况,这违背了分布式计算的初衷,使得整体的执行效率十分低下。

日常工作中数据倾斜主要发生在Reduce阶段,而很少发生在Map阶段,其原因是Map端的数据倾斜一般是由于HDFS数据存储不均匀造成的(公司的日志存储几乎都是均匀分块存储,每个文件大小基本固定),而Reduce阶段的数据倾斜几乎都是因为分析师没有考虑到某种key值数据量偏多的情况而导致的。

阅读全文 »

概述

Hive中为了实现JSON格式的数据解析,提供了两种解析JSON数据的方式,在实际工作场景下,可以根据不同数据,不同的需求来选择合适的方式对JSON格式数据进行处理。

  • 方式一:使用JSON函数进行处理
    Hive中提供了两个专门用于解析JSON字符串的函数:get_json_objectjson_tuple,这两个函数都可以实现将JSON数据中的每个字段独立解析出来,构建成表。
  • 方式二:使用Hive内置的JSON Serde加载数据
    Hive中除了提供JSON的解析函数以外,还提供了一种专门用于加载JSON文件的Serde来实现对JSON文件中数据的解析,在创建表时指定Serde,加载文件到表中,会自动解析为对应的表格式。
阅读全文 »

explode 函数

简介

explode函数属于UDTF函数(表生成),输入一行,输出多行。从英文直译过来是“爆炸”的意思,因此俗称爆炸函数。

语法和效果

explode函数接收map或者array类型的数据作为参数。在生成的表中,每个元素将单独成为一行数据。

  • explode(array)array列表里的每个元素生成一行;
  • explode(map)map里的每一对元素作为一行,其中key为一列,value为一列;
阅读全文 »

概述

Sqoop是Apache旗下一款ETL工具,用于Hadoop和RDBMS之间传送数据。

工作原理:将命令转换为MapReduce程序实现。

导入数据:MySQL、Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统。

导出数据:从Hadoop的HDFS、HIVE中导出数据到关系数据库MySQL等。

阅读全文 »

关于生活

上周的生活一如既往的普通,没有惊喜。只是我的生物钟一直倒不过来,昼伏夜出,上班迟到了好几次了。我也不想啊,老板在上班之前给我画饼,现在又让员工做非本职的工作,pua我们说不这样就是没吃过生活的苦。我吐了。

昨天在抖音上看到嘉兴一位女孩穿着漂亮的衣服坐在天台轻生被消防员救下。评论里多数都是赞美消防员的,这并没有什么错。在以前,这种视频大家的关注点都在轻生者上,现在反而都在救援者上。显然,人心渐渐变得冷漠,大家现在并不在意与自身毫无相干因生活绝望的轻生者,认为他们愚蠢,幼稚,活该。毕竟事情没有发生在他们身上,共情个屁。只能说,生活的压力下,人们都变的更加现实。

阅读全文 »

什么是拉链表

拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。
记录一个事物从开始,一直到当前状态的所有变化的信息。
Reference: https://cloud.tencent.com/developer/article/1752848

拉链表是一种维护缓慢渐变维的方式,可以让我们方便地查看某些维度在历史阶段的状态。

阅读全文 »

概念

什么是数据仓库

存储数据的仓库,主要是用于存储过去既定发生的历史数据,对这些数据进行数据分析的操作,从而对未来提供决策支持。

阅读全文 »