- 博客(20)
- 收藏
- 关注
原创 hiveSQL任务执行时间过长
在周例会上,发现自己经手过的任务运行时间在忙时长达两个多小时(公开处刑),这里总结下工作中遇到的一些造成任务执行效率低的原因:1、数据量过大比如有分区表,但是多表关联查询的时候没有指定分区,导致全表扫描。(注意on跟where的条)2、产生笛卡尔积优化3、访问API过多有些任务可能涉及到访问外部接口,过多的请求影响到任务执行效率。从业务或者其他方面优化4、从接口层取数前期的数仓设计不合理或者临时性取数,应用层的数据直接从接口层取数。需要优化模型设计,从接口层到中间层/轻度汇总
2021-12-13 10:00:06
3410
原创 Hive数据倾斜的原因及处理方法
什么是数据倾斜MapReduce程序执行时,大部分Reduce节点都执行完毕,但是有一个或几个Reduce节点执行非常慢,导致整个任务处理时间过长。这是因为某个key的条数比其他key多很多,这个key所在的Reduce节点所处理的数据量比其他节点就大很多,才会导致某几个节点一直运行不完。这种情况就称为数据倾斜。常见的原因key分布不均匀 业务数据本身的特性 建表时考虑不周 某些SQL语句本身就有数据倾斜解决方法1)key分布不均匀设置hive.groupby.skewindat
2021-10-12 08:04:05
562
原创 数据同步策略
数据同步策略类型包括:全量同步,增量同步、新增及变化、特殊情况 全量表:存储完整的数据 增量表:存储新增加的数据 新增及变化:存储新增加的数据和变化的数据 特殊表:只需存储一次 全量同步策略每日全量,作为一个新分区。适用于数据量不大,每天都有新增数据及更新数据的场景。如图书欠费信息。增量同步策略每日增量,即每天存储一份新增数据量作为一个分区。适用于数据量大,且只有新数据插入的场景。如一卡通消费记录表。新增及变化策略每天新增及变化,即存储创建时间和操
2021-10-08 21:06:47
508
原创 hive读取索引文件的问题
存在这么一张表,源数据是用LZO压缩并创建了索引drop table if exists ods_customer;create external table ods_customer( customer_id string, customer_name string, gender string, mobile string, birth date)partitioned by (dt string)stored as INPUTFORMAT
2021-10-07 19:14:37
447
4
原创 启动hiveserver2服务
如果想要远程连接hive,需要先启动hiverserver2服务。首先,修改$HIVE_HOME/con/hive-site.xml配置文件,将true改为false: <property> <name>hive.server2.enable.doAs</name> <value>false</value> <description> Setting this property to tr
2021-10-07 11:51:23
1968
原创 Hive调优
【注意】所有的配置项写到xml文件,需要更换格式。1、使用explain、explain extendedexplain select count(car_brand) from car; --结果见下图explain extended select count(car_brand) from car;使用explain可以看到Hive是怎么转换成MapReduce任务的。想要更详细的信息可以用explain extended。2、限制调整使用limit语句有时候可以避免整.
2021-09-25 12:53:56
153
原创 Hive模式设计
Hive常见的几种模式:1、按天划分的表对于数据增长非常快的业务,就可以应用这种方式。create table supply20210921(id int, part string);--也可以用分区create table supply(id int, part string) partitioned by (day int);alter table supply add partition(day=20210921);2、分区使用分区可以优化一些查询,但是要注.
2021-09-25 12:49:46
195
原创 kettle连接数据库(MySQL8.0驱动问题已解决)
1、新建数据库连接新建作业/转换—选择主对象树---DB连接—新建—填写信息测试通过即可2、添加驱动如果连接失败,提示没有找到对应的jdbc,则需要复制jar包到以下两个路径:data-integration/libdata-integration/libswt/对应电脑系统3、MySQL添加驱动后仍报错根据MySQL官网介绍,mysql5.7可以使用驱动5.1,但实际使用中可能会出现一些bug,建议还是安装驱动8.0由于8.0的jar包没有提供org.gjt..
2021-09-20 17:22:56
4623
原创 ODI代理自启动及虚拟内存修改
1、关于odi自启动方法,redhat下:命令行启动odi代码如下:/home/oracle/product/11.1.1/Oracle_ODI_1/oracledi/agent/bin/agent.sh -NAME=agent_name-PORT=20910自启动操作如下:mkdir -p/usr/odi/vi /usr/odi/start_odi.sh--start_odi.sh脚本输入以下内容,保存退出nohup/home/oracle/product...
2021-09-20 16:53:09
375
原创 忘记wallet密码如何登陆ODI
问题登陆ODI时提示需要输入wallet密码,但wallet密码是啥??没有wallet密码要怎么登陆ODI呢?(ODI12c在设置可以修改不输入wallet,11g不行)准备supervisor的密码 工作库、资料库的ip及账号密码详细操作1、修改supervisor密码(如果记得supervisor密码则忽略这一步)登录LY_ODI_ZLK 找到存放SUPERVISOR用户密码的表SNP_USER 修改加密密码PASS为aIyXs4XyqX56wjphku5y,明文为(123
2021-09-20 16:33:58
972
原创 xmlagg函数的使用--课表视图
需求将老师一周中同一大节的课表信息整理到同一条记录里,不同星期对应不同的列。(涉及到字符串拼接、行转列)常见的行转列函数有vm_concat、listagg、xmlagg等,但是oracle12g不支持vm_concat,而且前两个函数在拼接字符串的时候容易出现拼接结果过长、字符串缓冲区过小等问题,难搞。xmlagg就可以完美解决这个问题,拼接字段中出现null也不影响,唯一的不足就是多个null拼接时,xmlagg并不能自动省去,最后需要处理下多余的拼接符号,不然难看。xmlagg函数
2021-09-20 16:18:56
5700
原创 oracle多层嵌套后to_number比较数据出现无效数字的错误
select * from (selectXH ,--学号case when to_number(rxnj) <= 2020 - xz then '不在校'else '在校'end as zxzt --在校状态FROM xsxx where rxnj not in ('NULL',' ')) where zxzt='在校';在上述例子中,rxnj是varchar2类型,有非纯数字的数据值,xz是number类型,内层查询无报错,但是外层查询就会报错,也就是where条件不起作.
2021-09-20 15:56:12
1525
原创 odi代理自启动
@echo offtitle LY_WL_DL4pushd D:\oracle\oracledi\agent\bin --ODI安装路径call agent.bat -NAME=LY_WL_DL4 -PORT=21923 --代理名字跟端口pause
2021-09-20 15:41:40
247
原创 oracle数据库表中文注释显示为乱码
一般是由于数据库使用的编码跟服务器/电脑的编码不一致导致的,常规处理方法就是设置服务器使用编码跟数据库一致。查看oracle数据库的编码SELECT USERENV(‘LANGUAGE’) FROM DUAL;新建环境变量,或者修改已有的环境变量。设置变量名:NLS_LANG,变量值: SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者AMERICAN_AMERICA.AL32UTF8(依照实际情况确定变量值),确定即可...
2021-09-20 15:29:00
4749
原创 HiveQL:视图
当查询语句变得很长或者很难理解时,比如多层嵌套查询,我们可以用视图来降低查询难度。或者我们不想暴露全部的数据,也可以用视图来代替。但目前Hive不支持物化视图。-- 如果查询语句有确切的字段名,视图名后面的字段列表可省略create view if not exists orders(id, state, city, part ) comment 'select some info from the dynamic table' --可选tblproperties('creator'='amb
2021-09-19 22:44:08
137
原创 HiveQL:查询
1、select语句HiveQL一般是用本地模式执行,但涉及到聚合函数之类的就会启动MapReduce任务。可以设置hive.exec.mode.local.auto为true,其他操作也会尽量走本地模式。select id, name from cast;-- 依次获取字符串、集合元素(Array)、Map元素、Struct对象select name, subordinates[0], deductions['State Taxes'], address.city from employe
2021-09-19 19:21:22
308
原创 HiveQL:加载、导出数据
1、向管理表中装载数据使用load data的方式往表批量加入(Hive不支持行级别的数据操作),有几点需要注意:local:是从本地文件系统拷贝数据到分布式文件系统上的目标位置,如Hive默认的/user/hive/warehouse/路径下。不带local关键字,是从分布式文件系统上转移到分布式文件系统上的目标位置,如从/home/hadoop到/user/hive/warehouse/,同时要求是在同一个文件系统。 overwrite:会覆盖掉表中原有的数据。不带overwirte关键字,则
2021-09-19 11:46:47
144
原创 HiveQL:数据定义
基础Hive不支持记录级别的更新、插入或者删除操作。不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。但由于Hive查询延时严重,需要使用NoSQL,如Hbase或Cassandra。一般使用Hive可以通过CLI(命令行界面,用hive来表示),也可以用图形用户界面,如Karmasphere,Cloudera,Hue和Qubole提供的“Hive即服务”。元数据:Metastore是一个独立的关系型数据库(通常是一个MySQL实例),Hive会在其中保存表模式和其他系统元数据
2021-09-18 17:40:23
245
原创 Mac上的Hive安装和配置
懒人安装Hive大法,踩了n多坑...1、安装Hadoop因为Hadoop对伪程序猿(Java学的不够好)不友好,所以通过Hive来启动MapReduce任务,简单好上手。《Hive编程指南》是这么说的:Hive所有命令和查询都会进入Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce的job来执行)。当需要启动MapReduce任务(job)时,Hive本身是不会生成JavaMapReduce算法程序。相反,.
2021-09-17 10:48:04
925
原创 Mac安装hadoop--单机模式
在mac上安装Hadoop3.3.1,可以使用HomeBrew快捷安装。安装HomeBrew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"如果已经安装了HomeBrew,但更新失败可以参考其他做法:Mac-Homebrew-常见问题 | TimeMachine Notes先删除core源,再重新brewtab关联,就可以更新bre..
2021-09-16 07:45:17
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人