- 博客(65)
- 收藏
- 关注
原创 DataX抽取oracle数据到hive,数据量变多
数据抽取工具DataX数据源oracle 数据量 4184500目标表hive 数据量 4184555抽取后多了55条数据。
2023-05-19 12:11:29 579 1
原创 Java设计模式
对类来说,一个类应该只负责一项职责。如类A负责两个不同的职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
2023-03-30 15:22:48 1131
原创 IDEA中Maven报错:Failed to read artifact descriptor for解决方案
1、 打开项目后,在Intellij 右侧有个Maven projects,点开后,有个Lifecycle,再点开,可以看到clean , validate, compile, ….,双击clean,这里的project是我们的项目实际的名字。2、 在同样的地方(Lifecycle)里找到install, 双击install,这里的project同样是我们的具体项目的名字,这个过程比较久,如果有遇到哪个jar包不能下载的情况,可以手动将其放到本地的maven目录下。.”消失,需要的依赖开始下载。
2023-02-28 19:57:24 5396 1
原创 SQL执行顺序join在where前面
原本意图是取a表的昨日分区数据和b表的昨日分区数据进行join,但是发现加上and b.dt = '${daily}'的条件后就取不到在a表中存在的数据了。现在子查询中将b表的昨日分区查询出来,再和a表join。可以看到正常查询出a表中的数据了。
2022-10-18 17:22:54 1834
原创 Flink内存调优篇-广告实时统计的优化
布隆过滤器本质上是一个二进制向量(位数组)和一系列随机映射函数(哈希函数),用于判断数据一定不存在,或者可能存在。使用布隆过滤器去重,首先准备长度为M的位数组和K个哈希函数,对于到来的数据进行K次哈希,并将位数组中hash值对应的位置修改为1。举例说明,现有4条所需处理数据(ZFB,WX,DY,ZFB),准备以下位数组以及2个哈希函数位数组第一条数据ZFB到来,经过两次哈希,分别将位数组哈希对应位置由0修改为1第二条数据WX到来,经过两次哈希,分别将位数组哈希对应位置由0修改为1。
2022-08-25 09:42:05 1562
原创 正则表达式基础
正则表达式描述了一种字符串匹配的模式,也称规则表达式对字符串做这四件事 : 替换|分割|匹配|提取 首选正则\d 一个任意数字 0~9\D 一个非数字 除了0~9\w 一个字母 az|AZ|0~9\W 一个非字母\s 一个空格\S 一个非空格[] 字符选择器 只匹配一个“字符” [a-c]:a到c之间任意一个字符 [ac]:a和c之间任意一个字符{} 范围修饰符(修饰前面一个符号出现了多少次) \d{1,2}:最多出现2个,最少出现1个() 字符串选择器 分组 (com|org)? 修饰符(
2022-06-24 10:55:25 107
原创 clickhouse对比两台机器数据
select concat(database,'.',name),total_rows from system.tables where engine='MergeTree' and database != 'system' and total_rows!=0 order by database,name;两台机器分别跑,导出数据后对比
2022-05-30 10:17:43 368
原创 纵向求最大最小与横向求最大最小greatest(),least(),max(),min()
greatest (a,b,c,d,e)greatest 求的是某几列的最大值,横向求最大(一行的多列记录求最大)注意:a,b,c,d,e列中不能出现null值,否则greatest()返回值为null值selectgreatest(nvl(substr(a.update_time,1,10),0),nvl(substr(b.dt_editdate,1,10),0),nvl(substr(coalesce(c.editdate,c.adddate),1,10),0),nvl(substr(e
2022-05-30 09:55:16 322
原创 Hive行列转换
1.多行转多列姓名(name)学科(subject)成绩(score)A语文70A数学80A英语90B语文75B数学85B英语95行列转换思路分析及实现多行转多列如果需要将上⾯的样例表转换为姓名 | 语⽂成绩 | 数学成绩 | 英语成绩这样的格式,就是 多行转多列思路:涉及到行转成列,肯定是会按照某⼀列或者某⼏列的值进⾏分组来压缩⾏数,所以会⽤到group by。分组之后需要⽤到聚合函数,由于多列中的每列只关
2022-05-25 15:05:58 8454 1
原创 hive表注释全是?
现象解决办法把数据库元数据字符集调整了utf-8,发现还是不行,然后把hive连接元数据的url加了utf-8,新建的表注释正常显示了,但是之前乱码的仍旧是乱码
2022-05-23 13:46:37 237
原创 关于orc存储格式
A表是orc存储格式,创建和A表相同结构的B表,将A表的数据全部按分区移动到B表,发现B表的文件大小比A表小很多,B表的每个分区都比A表的对应分区小随机选了一天分区A表200k,B表16K
2022-05-17 20:49:10 420
原创 修改分区字段数据类型(convert string to date)
1.创建一张临时表,分区字段类型为date,其他和原始表一样CREATE TABLE `smartdb`.`smart_company_daily_dws_temp`( `parent_company_name` string COMMENT '父服务单位名称', `company_name` string COMMENT '服务单位名称', `source` string COMMENT '来源', .
2022-05-17 19:10:53 616
原创 hive动态分区后多出5个异常分区文件
背景分区字段dt为date类型,使用动态分区将四年半的数据按照日分区写入对应的分区中,动态分区后多出五个异常分区这五个异常分区时string类型,都是空分区,里面没有数据由于非日期类型影响了BI查询,所以需要将这五个分区删掉解决方法1.使用alter table smartdb.smart_company_daily_dws drop partition(dt=‘F7A5457433’);alter table smartdb.smart_company_daily_dws drop .
2022-05-17 17:00:01 513
原创 flink watermark
flink1.12版本开始,事件事件作为默认的时间语义工厂生产的商品上面印有时间戳,八点到九点的商品要坐一班车运走,商品从生产到运上车中间有一定的时间间隔,班车不能以系统时间作为时间判断标准,而应该以商品上面自带的时间戳作为时间判断标准,八点十分的商品来了,班车认为现在时间到了八点十分,九点钟的商品来了,班车认为现在时间到了九点,那么班车就带着[8,9)的商品出发了但是这样的话只有当前的班车知道现在时间是多少,后面的班车不知道现在时间(逻辑时间),那么后面的班车就不能进行时间相关的操作 应该有一个标
2022-04-29 19:50:33 1737
原创 org.apache.hadoop.hive.ql.exec.MoveTask
背景在测试环境使用个人账号创库创表在对表进行insert overwrite table 操作的时候出现下面报错Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Exception when loading 42 in table intelligent_customer_service_wide_dwd wi.
2022-04-14 15:31:28 3056
原创 Hive查询
筛选时间:当个月份,默认当前月到昨天;where month(event_time) = month(current_date()) and event_time < current_date()
2022-04-07 16:02:22 2174
原创 shell脚本
today = date +%Y-%m-%dyesterday = date -d "1 day ago" +%Y-%m-%dthis_month = date +%Y-%mone_year_ago = date -d "1 year ago" +%Y-%m-%d
2022-04-07 16:02:02 454
转载 定位block块位置
异常Caused by: org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtain block length for LocatedBlock{BP-215372827-172.23.30.41-1598540639502:blk_1112686982_38963124; getBlockSize()=101167104; corrupt=false; offset=0; locs=[DatanodeInfoWith.
2022-04-07 14:22:43 792
原创 HDFS文件租约未释放导致的异常
所报异常org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtain block length for LocatedBlockorg.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.RuntimeException: java.io.IOException: Fail to get checksum, since file /.
2022-04-07 14:01:24 2428
原创 月初在BI上发现没有数据
统计当月数据dws调度时间是2:35 ods和dwd的调度时间是4:10dws调度的时候,ods和dwd都还没有数据所以早上2:35执行的时候根本查不到数据,没有insert进去
2022-04-02 11:23:59 90
原创 Hive数据倾斜
什么是数据倾斜由于数据分布不均匀,造成数据大量集中到一点,造成数据热点,某个任务或者某个节点压力非常大,而其他的任务或者节点很空闲Hadoop框架特性A.不怕数据量大,怕数据倾斜B.sum,count,max,min等UDAF多进一出的聚合函数,通常不会有数据倾斜问题主要表现任务进度长时间维持在99%或者100%附近,查看任务监控页面,发现只有少量reduce子任务未完成,因为只有少量reduce子任务未完成,因为其处理的数据量和其他的reduce差异过大。单一reduce处理的记录数和平均记录
2022-03-02 10:20:32 758
原创 Hive优化方案
排序方式的选择order by,sort by,distribute by和sort by一起使用,cluster by1.order byHive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一此全局排序也就是说,在HQL中order by所有的数据都会到同一个reducer进行处理,不管有多少map,也不管文件中有多少的block,最后只会启动一个reducer,对于大量的数据这将会消耗很长的时间2.sort byHive中指定了sort by,那么
2022-03-01 23:18:06 1362
原创 Hive函数
collect_list比如有两个字段A和B,按B字段分组后,将分组后各个组的A字段中的每行数据 以数组形式 转到按B字段分组后的一列中可以根据需求用concat_ws 改变collect_list的返回值collect_set相比于上面的collect_list,会对分组后的组内成员进行去重concat将多个字段和字符合并成一个字段concat_ws第一个参数为每个字段和字符之间的 符号 ,后面的参数为要合并的字段和字符...
2022-02-10 11:58:34 708
原创 hive拉链表
什么是拉链表拉链表是数据仓库中用来记录一个事务从开始,一直到当前状态的所有变化的信息表如下是一张拉链表这张拉链表中存储的是用户的基本信息 以及 每条记录的生命周期我们可以使用这张表拿到当天的最新数据以及之前的历史数据拉链表使用场景在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的就会更大。表中的部分字段会被upd
2022-02-09 19:24:16 2595
原创 安装clickhouse后namenode无法启动
一次启动hadoop集群发现namenode始终无法启动,找了很多方法后,发现是新安装的clickhouse占用了9000端口,导致namenode无法启动解决方法:netstat -lnp | grep 9000然后kill -9 杀死9000端口的进程号之后就可以正常启动namenode了...
2022-02-09 15:59:24 1018 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人