- 博客(185)
- 收藏
- 关注
原创 flink sql 异常:INTEGER and VARCHAR(2147483647) does not have common type no
错误信息:BIGINT and VARCHAR(2147483647) does not have common type no解决办法看看是否进行了表关联,表关联的字段类型可能没有匹配上左表关联字段数据类型为bigint, 右表关联字段数据类型为string,从而导致一直报该异常。...
2022-04-02 16:56:37
5385
原创 Iceberg 集成 Hive
环境:hadoop 2.7.6hive 2.3.7iceberg 0.13.11、在 Hive 中启用 Iceberg 支持在 https://iceberg.apache.org/releases/ 下载iceberg-hive-runtime-0.13.1.jar将 iceberg-hive-runtime-0.13.1.jar和libfb303-0.9.3.jar移到hive lib目录下,配置hive-site.xml, 添加如下配置:<!-- iceberg配置 -->
2022-03-10 10:54:22
2703
原创 Hudi 集成 Hive
环境:hudi 0.10.1spark 2.4.5hive 2.3.7hadoop 2.7.51、建表并插入数据hudi会自动创建表,也可以提前建表:CREATE EXTERNAL TABLE `member_rt`( `_hoodie_commit_time` string, `_hoodie_commit_seqno` string, `_hoodie_record_key` string, `_hoodie_partition_path` string, `_hood
2022-03-07 19:50:37
5184
2
原创 使用Spark操作Hudi
开发环境:hadoop 2.7.6hive 2.3.7spark 2.4.51、pom文件 <repositories> <repository> <id>maven-ali</id> <url>http://maven.aliyun.com/nexus/content/groups/public//</url> <releases> <enabl
2022-03-07 14:28:11
3440
原创 Hudi 操作入门
1、构建环境版本:spark 2.4.5hudi 0.11.0> git clone https://github.com/apache/hudi.git && cd hudi> vim pom.xml> 配置阿里云maven镜像库> mvn clean package -DskipTests -DskipITs2、通过spark-shell快速启动> ./spark-shell --packages org.apache.spark:spa
2022-03-03 16:20:33
2707
原创 hive 常用日期操作【整理】
hive 中周和季度的操作假设 日期字段是order_time一周的第几天 : PMOD(DATEDIFF(order_time, ‘2012-01-01’), 7)一年的第几周: WEEKOFYEAR(order_time)季度 (hive <1.3): (INT((MONTH(order_time)-1)/3)+1)季度 (hive >=1.3): QUARTER(order_time)Hive中yyyymmdd和yyyy-mm-dd日期之间的切换方法1: from_uni
2022-02-24 17:44:32
2584
转载 是时候学习真正的 spark 技术了
spark sql 可以说是 spark 中的精华部分了,我感觉整体复杂度是 spark streaming 的 5 倍以上,现在 spark 官方主推 structed streaming, spark streaming 维护的也不积极了, 我们基于 spark 来构建大数据计算任务,重心也要向 DataSet 转移,原来基于 RDD 写的代码迁移过来,好处是非常大的,尤其是在性能方面,有质的提升, spark sql 中的各种内嵌的性能优化是比人裸写 RDD 遵守各种所谓的最佳实践更靠谱的,尤其对
2022-02-14 16:06:26
255
原创 Flink 窗口 触发器 ContinuousEventTimeTrigger
短窗口的计算由于其窗口期较短,那么很快就能获取到结果,但是对于长窗口来说短窗口时间比较长,如果等窗口期结束才能看到结果,那么这份数据就不具备实时性,大多数情况我们希望能够看到一个长窗口的结果不断变动的情况,对此Flink提供了ContinuousEventTimeTrigger连续事件时间触发器与ContinuousProcessingTimeTrigger连续处理时间触发器,指定一个固定时间间隔interval,不需要等到窗口结束才能获取结果,能够在固定的interval获取到窗口的中间结果。Cont
2022-02-08 15:22:49
1167
转载 Spark SQL 3.0 自适应执行优化引擎
在本篇文章中,笔者将给大家带来 Spark SQL 中关于自适应执行引擎(Spark Adaptive Execution)的内容。 在之前的文章中,笔者介绍过 Flink SQL,目前 Flink 社区在积极地更新迭代 Flink SQL 功能和优化性能,尤其 Flink 1.10.0 版本的发布,在增强流式 SQL 处理能力的同时也具备了成熟的批处理能力。但是在 SQL 功能完整性和生...
2022-01-22 14:51:08
547
原创 spark程序使用 gson 高版本解决方案
问题spark调用gson的方法,运行时抛出NoSuchMethod异常。本地编译无问题。查看依赖,程序本身并没有依赖老版本的gson。原因spark自带gson,版本为2.2.4。spark任务启动时,会优先加载该版本。程序本身编译集成的gson版本不会被加载。如果代码中使用了更高版本的gson才有的方法和特性,就会抛出异常。解决方案方法1使用和spark版本相同的gson,即2.2.4。优点:不会再报该异常。缺点:无法使用新版本的gson,一些方法和特性都无法使用
2021-12-26 18:22:58
1373
原创 Python 数据类型
常用数据类型 Common Data Types类型例子整数-100浮点数3.1416字符串‘hello’列表[1, 1.2, ‘hello’]字典{‘dogs’: 5, ‘pigs’: 3}Numpy数组array([1, 2, 3])其他类型 Others类型例子长整型1000000000000L布尔型True, False元组(‘ring’, 1000)集合{1, 2, 3}Pa
2021-12-21 10:45:26
95
原创 hive: NULL值关联与空字符串关联问题
案例:with tab1 as (SELECT stack(3, '1001',50, '',60, NULL,70 ) as (id, score) ), tab2 as (select stack(3, '1001', 777, '', 999, null, 555) as (id, score) )select a.*, b.* from tab1 a full join tab2 b on a.id =
2021-12-16 15:47:33
2710
原创 Spark SQL小文件问题解决方案
Spark SQL小文件小文件是指文件大小显著小于hdfs block块大小的的文件。过于繁多的小文件会给HDFS带来很严重的性能瓶颈,对任务的稳定和集群的维护会带来极大的挑战。由于Spark本身并不支持小文件合并功能,小文件问题日益突出。Spark为什么会产生小文件Spark生成的文件数量直接取决于RDD里partition的数量和表分区数量。注意这里的两个分区概念并不相同,RDD的分区与任务并行度相关,而表分区则是Hive的分区数目。生成的文件数目一般是RDD分区数和表分区的乘积。因此,当任务并
2021-12-10 10:34:41
5168
4
原创 图计算: 使用 Spark Graphx Pregel API 处理分层数据
今天,分布式计算引擎是许多分析、批处理和流应用程序的支柱。Spark提供了许多开箱即用的高级功能(pivot、分析窗口函数等)来转换数据。有时需要处理分层数据或执行分层计算。许多数据库供应商提供诸如“递归 CTE(公用表达式)”或“join” SQL 子句之类的功能来查询/转换分层数据。CTE 也称为递归查询或父子查询。在这篇文章中,我们将看看如何使用 Spark 解决这个问题。分层数据概述 –存在分层关系,其中一项数据是另一项的父项。分层数据可以使用图形属性对象模型表示,其中每一行都是一个顶点(节点)
2021-11-25 16:54:04
1521
原创 Hive输入表为压缩格式时,MapReduce的输入过程是怎样的?相关源码分析
先提出一个问题,数仓hive任务的输入表为压缩格式的时候,MapReduce针对输入过程是如何处理的?提出两种猜想:1、先解压缩,再切片,然后进行mapreduce接下来的阶段2、先切片,再解压缩读取,然后进行mapreduce接下来的阶段针对上面提出的问题,进行相关的mapreduce源码分析...
2021-11-19 15:25:44
756
原创 spark 调优参数
Spark.reducer.maxSizeInFlight默认值:48m参数说明:该参数用于设置shuffle read任务的buff缓冲区大小,该缓冲区决定一次可以拉取多少数据。调整建议:如果可用内存资源足够,则可以增加参数的大小(例如96m),从而减少拉取数据的次数,这可以减少网络传输的次数并提高性能。 在实践中发现,合理调整参数后,性能会提高1%至5%。但是executor内存不足时,设置的太大,就会造成OOM导致宕机Spark.shuffle.file.buffer默认值:32k参
2021-11-16 11:09:21
468
原创 如何在 LATERAL VIEW POSEEXPLODE 中使数组动态化?
在表中有一堆学生记录。school stduent_id start_date end_date111 123 2010-02-03 2012-02-03222 345 2013-02-03 2014-02-03222 567 2015-02-03 2018-02-03我想计算每所学校每年有多少学生,比如从 2014 年一直到 2021 年。目前,我使用横向视图,但它是硬编码的:SELE
2021-11-05 16:29:31
421
原创 使用Gson 将 json字符串转Map
依赖jar:<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version></dependency>实现代码:Gson gson = new Gson();Map<String, String> resultMap
2021-10-29 10:36:50
7808
原创 scala简介
Scala是什么?Scala是一门现代的多范式语言,志在以简洁、优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象和函数式语言的特性。Scala是面向对象的鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。Scala是函数式的鉴于一切函数都是值,又可以说Scala是一门函数式语言。Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函
2021-10-11 14:50:48
597
原创 hive使用ORC格式,注意事项
hive orc格式的表,使用注意事项测试表create table orc_part_tb(id int, name string) partitioned by (dt string) stored as orc;insert into orc_part_tb (dt = '01') select 1,'xiaoming' union all select 2,'xiaohong' union all select 3,'xiaozhang';使用orc格式的表可以使用alter table
2021-09-29 10:57:07
2207
原创 item2配置 rz, sz,解决命令卡住无响应问题
参考网上其他博客进行相应的配置,发现配置完成后并不能用,rz命令卡住,没有反应,看了下使用的脚本,发现是rz和sz链接的命令地址不存在。创建两个软链接cd /usr/local/binsudo ln -s /opt/homebrew/opt/lrzsz/bin/rz rzsudo ln -s /opt/homebrew/opt/lrzsz/bin/sz sz再次使用,就OK了...
2021-09-28 11:18:03
2331
1
原创 hive sql - 如何选择 hive 数组列中的前 n 个元素并返回选定的数组
表数据如下:user_id interest_arraytom [a,b,c,d,g,w]bob [e,d,s,d,g,w,s]cat [a]harry []peter NULL目的是按顺序选择每行“interest_array”中的前 3 个元素并将其作为数组返回,输出如下:user_id output_arraytom [a,b,c]bob [e,d,s]cat [a]harry []peter
2021-09-23 14:58:51
9125
原创 在hive中分解map数组结构的字符串
字符串结构如下:[{"name":"john","id":12,"location":"delhi"},{"name":"raj","id":18,"location":"mumbai"},{"name":"Rahul","id":14,"location":"hyd"}]需要分解它以创建一个新表,其中列名作为name、id 和location。实现方式首先将字符串转换为 JSON 对象数组:删除方括号,在大括号之间用逗号分隔并展开。然后使用带有横向视图的 json_tuple 来提取所有值。w
2021-09-14 10:40:03
725
原创 在 Hive 中的多个列上分解记录
我正在尝试在 Hive 中的多列中分解记录。例如,如果我的数据集如下所示COL_01 COL_02 COL_031 A, B X, Y, Z2 D, E, F V, W我想要的结果是:COL_01 COL_02 COL_031 A X1 B Y1 NULL Z2 D V2 E W2 F
2021-09-13 20:28:27
150
原创 如何在 HIVE 中将字符串解析为映射数组
我有一个从系统日志中提取的配置单元表。数据以一种奇怪的格式(映射数组)编码,其中数组的每个元素都包含field_name和它的value。列类型为 STRING。就像在下面的例子中一样:select 1 as user_id, '[{"field":"name", "value":"Bob"}, {"field":"gender", "value":"M"}]' as user_infounion allselect 2 as user_id, '[{"field":"gender", "value"
2021-09-13 20:08:45
4784
原创 Hive SQL 查询以使用日期范围之间的最近值填充表中缺失的日期值
对于下面的示例,如果我使用下面的相同数据,并且我希望 Mary 和 Peter 帐户在同一日期范围内,我将如何修改 hive sql 查询来执行此操作?例如,将日期范围设置在“2021-05-24”和“2021-06-03”之间,并填充此期间的所有余额。如果我们以 Mary 为例,我还希望看到 Mary 可用余额 ‘53028.1’ 向前填充到 ‘2021-06-03’ 并且如果 Mary 在 ‘2021-05-24’ 上没有值’ 将其填充 ‘50000’ 的余额。with mytable as (--D
2021-09-13 19:47:24
2091
原创 如何在 Hive 中使用最近的值填补到缺失的日期中
我花了几天的时间试图弄清楚如何在 Hive 中使用最近的值添加到缺失的日期中,但没有成功。原始表目前看起来像下表:account name,available balance,Date of balance Peter,50000,2021-05-24Peter,50035,2021-05-25Peter,50035,2021-05-26Peter,50610,2021-05-28Peter,51710,2021-06-01Peter,53028.1,2021-06-02Peter,53
2021-08-11 17:34:55
2317
1
原创 hive sql: 带有 max() 的 case 语句
我有一个日期列yyyy_mm_dd。我想使用以下逻辑基于它创建一个附加列:如果 yyyy_mm_dd = 一个月的最后一天,则 1如果 yyyy_mm_dd 不是该月的最后一天而是数据集中的最大日期,则为 1否则为 0我能够想出这个,它适用于逻辑的第 1 部分和第 3 部分:select *, case when yyyy_mm_dd == last_day(yyyy_mm_dd) then 1 when yyyy_mm_dd != last_d
2021-08-11 17:09:29
2208
原创 Mysql 表结构 到 hive 表结构的转换 (DDL自动生成)
最近在做mysql 入hive数仓的工作,由于业务表数量较大,单独写hive DDL太过耗时,就找到了如下方法。准备一张维度表:dim_ddl_convert,建表语句如下:CREATE TABLE dim_ddl_convert ( source VARCHAR(100) NOT NULL, data_type1 VARCHAR(100) NOT NULL, target VARCHAR(100) NOT NULL, da
2021-07-19 10:32:02
3221
10
原创 hive数据保留小数点两位小数
方法一round(column_name,2)四舍五入截取(这种方法慎用,有时候结果不是你想要的)select round(645342.875645342,2);+------------+--+| _c0 |+------------+--+| 645342.88 |+------------+--+方法二cast(column_name as decimal(10,2))cast函数截取(推荐使用)select cast(645342.8756
2021-07-12 16:02:24
18993
原创 hive动态分区问题总结
Hive 配置动态分区insert into table xxx partition(xxxx)select ...使用动态分区时首先需要的一些配置:是否开启动态分区 hive.exec.dynamic.partition动态分区是否使用严格模式 hive.exec.dynamic.partition.modeMR总共可创建最大分区数 hive.exec.max.dynamic.partition.partitions(默认1000)当前节点可创建的最大分区数 hive.exec.max.
2021-07-12 14:14:37
3255
转载 sql语句判断两个时间段是否有交集
场景: 数据库有有两个字段.开始时间,和结束时间,指定一个时间段(a,b),a表示开始时间,b表示结束时间。看数据库中有没有与(a,b)冲突的时间段,有的话就返回那条记录。***解析:***两个时间段相当于两个集合,不过是有顺序的集合。两个时间段有交集细分有四种情况。用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,如果返回不为空则表明有交集,否则没有交集。sql语句:select * from test_tablewhere (startTime > a AND
2021-06-30 18:07:33
3416
2
原创 如何使用 CTE 在 Spark SQL 中创建临时视图?
举个例子????:create temporary view cars as with models as ( select 'abc' as model)select model from models
2021-06-04 16:51:27
459
转载 一篇文章搞懂数据仓库:总线架构、一致性维度、一致性事实
目录1、概述总线架构一致性维度一致性事实2、总线架构demo小结1、概述在Kimball的维度建模的数据仓库中,关于多维体系结构(MD)有三个关键性概念:总线架构(Bus Architecture),一致性维度(Conformed Dimension)和一致性事实(Conformed Fact)。总线架构多维体系结构(总线架构) 数据仓库领域里,有一种构建数据仓库的架构,叫Multidimensional Architecture(MD),中文一般翻译为“多维体系结构”,也称为“总线架构”(Bus
2021-05-29 13:53:47
1666
转载 数仓建模—数据模型
文章目录数据模型什么是数据模型数据仓库模型数据仓库三个阶段简单报表阶段数据集市阶段数据仓库阶段数据模型建设的意义进行全面的业务梳理建立全方位的数据视角数据模型所谓水无定势,兵无常法。不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的。在银行业,IBM 有自己的 BDWM(Banking data warehouse model),而 NCR 有自己的 FS-LDM 模型。在电信业,IBM 有 TDWM(Telecom Data warehouse model),而 NCR
2021-05-27 22:38:13
267
转载 数仓建模—数据治理
文章目录1、数据治理统一流程参考模型为什么要治理?数据质量层次不齐数据交换和共享困难缺乏有效的管理机制存在数据安全隐患发现问题严重滞后影响不清晰DMBOK的数据治理框架2、数仓治理治理的分类粗治理细治理数据源治理数据源管理数据源监控数据同步数仓模型治理数据划分及命名空间约定常规表的命名中间表统一指标和字段命名公共处理逻辑下沉及单一核心模型与扩展模型分离层次调用约定组合原则数据拆分核心表数据冗余sql 规范任务注释sql 模板数据服务治理上下游约定上游约定表结构变更枚举值create_time & u
2021-05-21 11:00:20
1138
转载 数仓建模—建模流程
1、建模流程其实就是业务模型->概念模型->逻辑模型->物理模型的这样一个流程,下面我们详细解释一下各个模型阶段都要做什么业务建模(需求沟通)根据业务部门进行划分,理清部门之间的关系,然后将各个部门的具体业务程序化,与业务部门开会协商出需求的指标、保存年限、维度等等。总体来讲,就是要知道他们需要哪些指标以及他们能提供哪些数据。业务建模的时间最长,而且与公司实际的业务环境息息相关,因此在这里需要根据实际生产环境和业务需求确认好数据仓库使用的工具和平台。主要解决业务层面的分解和
2021-05-19 16:20:57
3881
原创 hive中实现group_concat
mysql中的group_concat分组连接功能相当强大,可以先分组再连接成字符串,还可以进行排序连接。但是hive中并没有这个函数,那么hive中怎么实现这个功能呢?这里要用到:concat_ws函数和collect_list、collect_set 函数。建立测试表(无分区表):create table if not exists db_name.test_tb( id string, content string, comment string) row format delimi
2021-04-12 17:02:23
19021
1
原创 hive 的 struct、map与array 类型
hive支持struct,map,array三种集合类型1、struct与C语言、golang中的struct类似,可以通过.语法来访问定义一个包含struct字段的表create table test2( field1 struct<name:string,age:int> comment "test field") row format delimited fields terminated by "," collection items terminated by ":.
2021-03-28 14:13:02
1060
转载 Hive使用必知必会系列
一、Hive的几种数据模型内部表 (Table 将数据保存到Hive 自己的数据仓库目录中:/usr/hive/warehouse)外部表 (External Table 相对于内部表,数据不在自己的数据仓库中,只保存数据的元信息)分区表 (Partition Table将数据按照设定的条件分开存储,提高查询效率,分区-----> 目录)桶表 (Bucket Table本质上也是一种分区表,类似 hash 分区 桶 ----> 文件)视图表 (视图表是一个虚表,不存储数据,用来
2021-03-28 13:46:25
440
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅