自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TRX的博客

读书百遍,其义自见。

  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 Hive/SparkSQL中UDF/UDTF/UDAF的含义、区别、有哪些函数

即用户定义函数,UDF用于处理一行数据并返回一个标量值(单个值),这个值可以是字符串、数字、日期等。即用户定义聚集函数,UDAF用于执行自定义的聚合操作,作用于多行数据,并且产生一个输出数据行,UDAF函数的输入与输出值是n:1的关系。UDTF函数的输入与输出值是1:n的关系。explode()、posexplode()、json_tuple()等。datediff()、substr()、concat()等。计算日期之间的差异、字符串处理、数据格式化等。avg()、sum()、count()等。

2024-01-02 17:40:15 610

原创 Hive/SparkSQL中Map、Array的基本使用和转换

语法: map (key1, value1, key2, value2, …)说明:根据输入的key和value对构建map类型。

2024-01-02 16:12:03 1234 1

原创 HIVE/SQL 实现同一列数据累加和累乘

以上是对数的一些运算性质,其中我重点圈出了两个性质,这将是我们使用 hive sql 实现同一列数据累乘的关键;1)左边的红框中,两个底数(a)相同的对数相加 = 以a为底(N*M)的对数,其中(N*M)就是我们想要的计算结果,应该如何获取(N*M)呢?2)看右边红框的性质,我们可以利用这个性质获取(N*M)映射到 hive ,可以将同一列的相乘转为同一列的对数相加,在求真数即可;具体做法:

2022-09-14 22:24:11 4250 1

原创 Hive SQL 五大经典面试题

第 1 题 连续问题第 2 题 分组问题第 3 题 间隔连续问题第 4 题 打折日期交叉问题第 5 题 同时在线问题

2022-04-04 15:11:05 12665 10

原创 Hive 如何合理设置 Map 及 Reduce 数

一、概述1.通常情况下,作业会通过 input 的目录产生一个或者多个 map 任务。主要的决定因素有:input 的文件总个数,input 的文件大小,集群设置的文件块大小。2.是不是 map 数越多越好?答案是否定的。如果一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个 map 任务来完成,而一个 map 任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的 map 数是受限的。3.是不是保证每个 map 处理接近 12

2022-04-03 22:20:29 5684

原创 MySQL/Hive 常用窗口函数详解及相关面试题

一、窗口函数:窗口函数也称为OLAP函数,OLAP 是OnLine Analytical Processing 的简称,意思是对数据库数据进行实时分析处理。例如,市场分析、创建财务报表、创建计划等日常性商务工作。窗口函数就是为了实现OLAP 而添加的标准SQL 功能。0.窗口函数的分类按照功能划分:序号函数:row_number() / rank() / dense_rank() 分布函数:percent_rank() / cume_dist() 前后函数:lag() / lead()

2022-04-02 18:50:07 3995

原创 Hive 行转列、列转行的应用场景和解决方案

一、行转列1.相关函数CONCAT(string A/col, string B/col…) 返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1, str2,...) 它是一个特殊形式的 CONCAT()。 第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。 如果分隔符是 NULL,返回值也将为 NULL。 这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间; 注意:

2022-04-02 15:52:48 1532

原创 《Hive官方文档》Hive - Lateral View 与 explode() 结合使用

官网链接:Hive官方文档一、Lateral View 语法lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)*fromClause: FROM baseTable (lateralView)*Lateral View用于UDTF(user-defined table generating functions)中将行转成列,例如explode()。二、示例

2022-04-02 12:51:59 876

原创 Hive 官网函数全列表(聚合函数/日期函数/字符串函数...)

一、数学函数二、聚合函数 返回类型 函数名 描述 BIGINT count(*) 计算总行数,包括含有NULL值的行。 BIGINT count(expr) 计算expr表达式非NULL的行的数量 BIGINT count(DISTINCT expr[, expr_.]) 计算expr表达式去重后且非NULL的行的数量 DOUBLE su

2022-04-02 10:19:07 1512

原创 《Hive官方文档》Hive - Joins 学习笔记

官网链接:Hive官方文档hive 0.13.0以后的版本,支持了隐式join标记。例如SELECT * FROM table1 t1, table2 t2, table3 t3 WHERE t1.id = t2.id AND t2.id = t3.id AND t1.zipcode = '02535'这样的写法,等同于SELECT * FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id AND t1.zipcode = '02535' JOI

2022-04-01 22:18:20 1019

原创 Flink作业开发清单(5)——Time/时间

引用自Time 深度解析Flink对多种时间语义的支持,是它的优势之一;Flink既支持Processing Time,又支持Event Time:Processing Time 是来模拟我们真实世界的时间,其实就算是处理数据的节点本地时间也不一定就是完完全全的我们真实世界的时间,所以说它是用来模拟真实世界的时间。而 Event Time 是数据世界的时间,就是我们要处理的数据流世界里面的时间。关于他们的获取方式,Process Time 是通过直接去调用本地机器的时间,而 Event Tim

2022-03-25 17:56:29 2087

原创 Flink作业开发清单(4)——State/状态

建议阅读:Working with State 状态管理及容错机制如果当前的计算依赖于前面数据产生的结果,那就需要依赖状态;比如Word Count,需要通过状态来保存前面数据的统计结果。状态类型Flink Managed State分为两类,一是Keyed State,二是Operator State。用户经常用到的是Keyed State。Keyed State几种 Keyed State 的差异具体体现在:ValueState 存储单个值,比如 Wordcount,.

2022-03-25 17:49:42 447

原创 Flink作业开发清单(3)——Checkpoint

CheckpointCheckpoint功能可以保证作业失败重启或升级重启后,从上次"离开"的位置继续运行;比如Flink Kafka就是通过Checkpoint记录消费的Offset记录的;如果没有开启Checkpoint,那么每次重启作业可能会重复消费数据或者丢失数据(与配置相关);1.开启CheckpointStreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();Che

2022-03-25 17:42:22 1323

原创 Flink作业开发清单(2)——常用接口

开发Flink作业过程需要用到的一些常用接口:一、创建StreamExecutionEnvironmentStreamExecutionEnvironment主要用来配置一些运行参数以及创建Source。StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();配置开启Checkpoint(方便作业失败后自动恢复):env.enableCheckpointing(600

2022-03-25 16:30:08 1709

原创 Flink作业开发清单(1)——依赖管理

Flink相关的依赖:<!-- java --><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>${flink.version}</version> <scope>provided</scope></dependency

2022-03-25 15:39:16 1990

原创 【2】数据湖架构中 Iceberg 的核心特性

在业界的数据湖方案中有 Hudi、Iceberg 和 Delta 三个关键组件可供选择。一、Iceberg 是什么?Iceberg 官网中是这样定义的:Apache Iceberg is an open table format for huge analytic datasets即 Iceberg 是大型分析型数据集上的一个开放式表格式。通过该表格式,将下层的存储介质(HDFS、S3、OSS等)、文件格式(Parquet、Avro、ORC等)与上层计算引擎(Flink、Spark、.

2022-03-21 22:00:55 4984 3

原创 数据湖概念以及数据湖产生的背景和价值

一、数据湖的概念数据湖是一个集中式存储库,允许以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。是构建在低成本分布式存储之上,提供更好事物和性能支持的统一数据存储系统。典型分层如下图所示:最底层为存储层:一般依赖HDFS或者公有云存储(比如S3)保存数据;数据格式为开放格式,比如Parquet或者ORC; 中间层为数据表抽象层:它的关键作用在于提

2022-03-21 21:44:26 4877 3

原创 《Spark官方文档》Web UI -学习笔记

Apache Spark 提供了一套 Web 用户界面(UI),您可以使用它们来监视 Spark 集群的状态和资源消耗。如:一、Jobs 页面Jobs 页面展示了Spark应用程序中所有作业的摘要信息以及每个作业的详细信息页。摘要页面显示整体信息,例如所有作业的状态、持续时间和进度以及整个事件的时间线。点击某个job将进入该job的详细信息页面,会进一步显示时间时间线、DAG可视化效果以及作业的所有stages。Jobs 页中显示的信息是:User: 当前Spark任务提

2022-03-10 21:10:43 1755

原创 《Spark官方文档》监控和工具-学习笔记

官网链接:Monitoring and Instrumentation - Spark 3.2.1 Documentation有几种方法可以监控Spark应用程序:Web UI、metrics 以及外部工具。Web UI每个SparkContext都会启动一个web UI,其默认端口为4040,并且这个web UI能展示很多有用的Spark应用相关信息。包括:一个stage和task的调度列表 一个关于RDD大小以及内存占用的概览 运行环境相关信息 运行中的执行器相关信息你只需打

2022-03-10 17:25:53 1945

原创 Flink提取EventTime并生成Watermark几种常用的方式

设置eventTime的方式分两种情况:升序数据提取时间戳 直接使用:.assignAscendingTimestamps(_.timestamp * 1000L) 乱序数据提取时间戳,有三种种构造方式(1.10版本只有前两种,flink版本1.11以后建议使用方式三) 方式一:AssignerWithPeriodicWatermarks 周期性的生成 watermark,默认周期是200ms,也可以通过setAutoWatermarkInterval设置周期时间 常用的实现类是:B

2022-02-26 22:36:35 2265 2

原创 FLink 中的Window及各种WindowFunction

streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无限数据为有限块进行处理的手段。Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。一、Window可以分为两类:CountWindow:按照指定的数据条数生成一个Window,与时间无关。 TimeWindow:按照时间生成Window。对于Ti

2022-02-26 21:44:07 2541

原创 Mac环境搭建Hadoop伪分布式无法启动namenode问题解决办法

参考:MAC下搭建Hadoop运行环境_白程序员的自习室-CSDN博客_hadoop mac 的博客,在我的Mac上搭建Hadoop,启动时遇到namenode无法启动的问题,折腾了一下午,终于解决,记录一下我是根据博文的步骤进行配置的,细节大家可以移步看看,下面贴出我的配置:hadoop版本:3.2.1JDK:1.8一、我的配置文件:1. core-site.xml<configuration> <property> <name>ha.

2021-12-12 20:42:50 3941

原创 Spark 优化——RDD缓存(cache、persist、checkpoint)的区别及策略选择

目录一、RDD持久化1.什么时候该使用持久化(缓存)2. RDD cache & persist 缓存3. RDD CheckPoint 检查点4. cache & persist & checkpoint 的特点和区别特点区别二、cache & persist 的持久化级别及策略选择Spark的几种持久化级别:1.MEMORY_ONLY2.MEMORY_AND_DISK3.MEMORY_ONLY_SER4.MEMORY_.

2021-09-07 22:26:08 2637 2

原创 Spark 优化——故障排除

目录故障排除一:控制 reduce 端缓冲大小以避免 OOM故障排除二:JVM GC 导致的 shuffle 文件拉取失败故障排除三:解决各种序列化导致的报错故障排除四:解决算子函数返回 NULL 导致的问题故障排除五:解决 YARN-CLIENT 模式导致的网卡流量激增问题故障排除六:解决 YARN-CLUSTER 模式的 JVM 栈内存溢出无法执行问题故障排除七:解决 SparkSQL 导致的 JVM 栈内存溢出故障排除八:持久化与 checkpoint 的使用故障排

2021-09-07 02:43:38 334

原创 Spark 优化——数据倾斜解决方案

目录一、什么是数据倾斜数据倾斜的表现:定位数据倾斜问题:二、解决方案解决方案一:聚合原数据1) 避免 shuffle 过程2) 缩小 key 粒度(增大数据倾斜可能性,降低每个 task 的数据量)3) 增大 key 粒度(减小数据倾斜可能性,增大每个 task 的数据量)解决方案二:过滤导致倾斜的 key解决方案三:提高 shuffle 操作中的 reduce 并行度reduce 端并行度的设置reduce 端并行度设置存在的缺陷解决方案四:使用随机 k

2021-09-07 02:30:47 529

原创 Spark 优化——性能(常规性能、算子、Shuffle、JVM)调优

目录一、常规性能调优1.常规性能调优一:最优资源配置2.常规性能调优二:RDD 优化1) RDD 复用2) RDD 持久化3) RDD 尽可能早的 filter 操作3.常规性能调优三:并行度调节4.常规性能调优四:广播大变量5.常规性能调优五:Kryo 序列化6.常规性能调优六:调节本地化等待时长二、算子调优1.算子调优一:mapPartitions2.算子调优二:foreachPartition 优化数据库操作3.算子调优三:filter 与 co

2021-09-07 01:54:11 519

原创 Spark内核之Driver的工作流程(Stage划分、Task划分、Task调度)

fff

2021-09-05 23:54:50 2894 4

原创 Spark内核(执行原理)之环境准备/Spark作业提交流程

了解Spark任务的提交到运行的流程,其中包含两个阶段:第一阶段在Yarn集群之外执行,主要是作业的提交,将作业提交到Yarn集群为止。 第二阶段在Yarn集群执行,涉及资源分配、AM、Driver、Executor等组件的创建和启动。一、第一阶段:作业提交1.提交脚本作业提交脚本一般提交一个spark作业的方式采用spark-submit来提交# Run on a Spark standalone cluster./b...

2021-09-05 19:45:11 332

原创 一文看懂Spark中reduceByKey 和 groupByKey 的区别

目录一、先看结论二、举例、画图说明1.实现的功能分别是什么?1).groupByKey 实现 WordCount2).reduceByKey 实现 WordCount2.画图解析两种实现方式的区别1) groupByKey 实现 WordCount2).reduceByKey 实现 WordCount(简单流程)3).reduceByKey 实现 WordCount(终极流程)一、先看结论1.从Shuffle的角度 reduceByKey 和 g...

2021-09-04 21:08:53 13512 4

原创 MySQL之Explain用法、各字段解释、优化实例

一、概念使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分析你的查询语句或是表结构的性能瓶颈。二、作用使用 EXPLAIN 你能了解到你写的SQL在执行时的什么信息?三、怎么用表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询...

2021-04-15 17:03:34 442

原创 使用 Docker 开发镜像编译Doris0.12.0(采坑)

跟着Doris官网(官网:doris0.12.0)使用Docker镜像编译Doris0.12.0时遇到一些问题,记录一下~一、编译Doris1.下载Docker选择Doris版本对应的镜像版本,这里我的Doris版本是0.12.0。docker pull apachedoris/doris-dev:build-env-1.2...

2021-03-31 00:57:32 1419

原创 Yarn基础架构/工作机制/作业提交流程

一、什么是YarnYarn是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。二、Yarn的基本架构YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。看一张官网上的架构图:由图可以看出,yarn总体上是master/slaver结构,在整个资源管理框架中ResourceManager为m

2021-03-14 07:09:37 427 3

原创 原码、反码、补码的运算及在计算机中的作用

一、概念简述机器码:一个数在计算机中的二进制形式,机器码是带符号的,在计算机用机器码的最高位存放符号,正数为0,负数为1。 如 0000 0011 和 1000 0011。机器码的真值:机器码除符号位剩下的真正数值。 如 0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1。原码:数值的二进制表示形式,用来转换对应的进制。 如: [+1]原= 000...

2021-02-24 17:03:50 2196

原创 Hive解决数据倾斜的各种优化方法

一、概念数据处理中的数据倾斜:个人理解,在数据处理的MapReduce程序中,由于数据的特殊性,数据中存在大量相同key的数据,根据业务需求需要对这个key进行分区操作(group by/join)时,在map的partition阶段将大数据量的相同key的数据全部分配到同一个Reduce,导致Reduce的节点数据量分配极度不均衡的现象,称为数据倾斜。数据倾斜有哪些表现:最直观的表现就是:Hive SQL运行得慢 任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量.

2021-01-20 20:39:46 5477

原创 Hive内部表和外部表

Hive表分为两类,即内部表和外部表。内部表(managed table)所谓内部表(managed table)即Hive管理的表,Hive内部表的管理既包含逻辑以及语法上的,也包含实际物理意义上的,即创建Hive内部表时,数据将真实存在于表所在的目录内,删除内部表时,物理数据和文件也一并删除。外部表(external table)外部表(external table)则不然,其管理仅仅是在逻辑和语法意义上的,即新建表仅仅是指向一个外部目录而已。同样,删除时也并不物理删除外部目录,而仅仅是

2021-01-19 15:50:46 3438

原创 MapReduce内部执行原理

假设本文用到的输入文件有如下两个。文件1:big dataoffline dataonline dataoffline online data文件2:hello datahello onlinehello offline按照时间顺序,MapReduce任务执行包括:输入分片Map、Shuffle和Reduce等阶段,一个阶段的输出正好是下一阶段的输入。结合上文的示例文件更加深入和详细地介绍上述过程,结合单词计数实例的MapReduce执行阶段和流程图:1.输

2021-01-19 14:28:55 167

原创 LeetCode185. 部门工资前三高的所有员工(Mysql)

Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |+----+-------+--------+--------------+| 1 | Joe | 85000 | 1 || 2 | Henry | 80000 | 2...

2020-12-31 18:10:31 296

原创 Mysql查询结果显示行号

如何获取行号?关键:自定义变量@rowNum:=0;假设有这样的数据mysql> select id,name from students;+----+----------+| id | name |+----+----------+| 1 | zhangsan || 2 | lisi || 3 | wangwu || 4 | trx || 5 | pjf || 6 | wzm |+----+---------

2020-12-31 15:43:43 2128

原创 mysql自动排序函数dense_rank() over()、rank() over()、row_num() over()用法和区别

区别:rank():是并列排序,会跳过重复序号 dense_rank():是并列排序,不会跳过重复序号 row_number():是顺序排序,不跳过任何一个序号,就是行号用法:数据准备:create table students( id int(11) auto_increment primary key, name varchar(50) not null, score int(4) not null );insert into students(name,score)

2020-12-31 01:59:07 2178

原创 LeetCode 178.分数排名(Mysql)

题目编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |+----+-------+例如,根据上述给定的 S...

2020-12-31 01:31:50 219

某技术论坛用户访问日志数据

某技术论坛的用户访问日志,可供学习hadoop+hive的用户下载练习使用。

2019-03-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除