<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[amberwest]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Honghui_Wang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Honghui_Wang]]></copyright><item><title><![CDATA[hiveSQL任务执行时间过长]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/121898870</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/121898870</guid><author>Honghui_Wang</author><pubDate>Mon, 13 Dec 2021 10:00:06 +0800</pubDate><description><![CDATA[在周例会上，发现自己经手过的任务运行时间在忙时长达两个多小时（公开处刑），这里总结下工作中遇到的一些造成任务执行效率低的原因：

1、数据量过大

比如有分区表，但是多表关联查询的时候没有指定分区，导致全表扫描。（注意on跟where的条）

2、产生笛卡尔积

优化

3、访问API过多

有些任务可能涉及到访问外部接口，过多的请求影响到任务执行效率。从业务或者其他方面优化

4、从接口层取数

前期的数仓设计不合理或者临时性取数，应用层的数据直接从接口层取数。需要优化模型设计，从接口层到中间层/轻度汇总]]></description><category></category></item><item><title><![CDATA[Hive数据倾斜的原因及处理方法]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120712097</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120712097</guid><author>Honghui_Wang</author><pubDate>Tue, 12 Oct 2021 08:04:05 +0800</pubDate><description><![CDATA[什么是数据倾斜

MapReduce程序执行时，大部分Reduce节点都执行完毕，但是有一个或几个Reduce节点执行非常慢，导致整个任务处理时间过长。这是因为某个key的条数比其他key多很多，这个key所在的Reduce节点所处理的数据量比其他节点就大很多，才会导致某几个节点一直运行不完。这种情况就称为数据倾斜。

常见的原因

key分布不均匀
	业务数据本身的特性
	建表时考虑不周
	某些SQL语句本身就有数据倾斜
解决方法

1）key分布不均匀

设置hive.groupby.skewindat]]></description><category></category></item><item><title><![CDATA[数据同步策略]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120659938</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120659938</guid><author>Honghui_Wang</author><pubDate>Fri, 08 Oct 2021 21:06:47 +0800</pubDate><description><![CDATA[数据同步策略类型包括：全量同步，增量同步、新增及变化、特殊情况


	全量表：存储完整的数据
	
	
	增量表：存储新增加的数据
	
	
	新增及变化：存储新增加的数据和变化的数据
	
	
	特殊表：只需存储一次
	
全量同步策略

每日全量，作为一个新分区。适用于数据量不大，每天都有新增数据及更新数据的场景。如图书欠费信息。

增量同步策略

每日增量，即每天存储一份新增数据量作为一个分区。适用于数据量大，且只有新数据插入的场景。如一卡通消费记录表。

新增及变化策略

每天新增及变化，即存储创建时间和操]]></description><category></category></item><item><title><![CDATA[hive读取索引文件的问题]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120639938</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120639938</guid><author>Honghui_Wang</author><pubDate>Thu, 07 Oct 2021 19:14:37 +0800</pubDate><description><![CDATA[存在这么一张表，源数据是用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 ]]></description><category></category></item><item><title><![CDATA[启动hiveserver2服务]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120634376</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120634376</guid><author>Honghui_Wang</author><pubDate>Thu, 07 Oct 2021 11:51:23 +0800</pubDate><description><![CDATA[如果想要远程连接hive，需要先启动hiverserver2服务。

首先，修改$HIVE_HOME/con/hive-site.xml配置文件，将true改为false：


  &lt;property&gt;
    &lt;name&gt;hive.server2.enable.doAs&lt;/name&gt;
    &lt;value&gt;false&lt;/value&gt;
    &lt;description&gt;
      Setting this property to tr]]></description><category></category></item><item><title><![CDATA[Hive调优]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120470327</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120470327</guid><author>Honghui_Wang</author><pubDate>Sat, 25 Sep 2021 12:53:56 +0800</pubDate><description><![CDATA[【注意】所有的配置项写到xml文件，需要更换格式。

1、使用explain、explain extended


explain select count(car_brand) from car; --结果见下图


explain extended select count(car_brand) from car;

使用explain可以看到Hive是怎么转换成MapReduce任务的。想要更详细的信息可以用explain extended。



2、限制调整

使用limit语句有时候可以避免整.]]></description><category></category></item><item><title><![CDATA[Hive模式设计]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120470286</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120470286</guid><author>Honghui_Wang</author><pubDate>Sat, 25 Sep 2021 12:49:46 +0800</pubDate><description><![CDATA[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、分区

使用分区可以优化一些查询，但是要注.]]></description><category></category></item><item><title><![CDATA[kettle连接数据库（MySQL8.0驱动问题已解决）]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120393245</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120393245</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 17:22:56 +0800</pubDate><description><![CDATA[1、新建数据库连接

新建作业/转换—选择主对象树---DB连接—新建—填写信息

测试通过即可



2、添加驱动

如果连接失败，提示没有找到对应的jdbc，则需要复制jar包到以下两个路径：


data-integration/lib
data-integration/libswt/对应电脑系统

3、MySQL添加驱动后仍报错

根据MySQL官网介绍，mysql5.7可以使用驱动5.1，但实际使用中可能会出现一些bug，建议还是安装驱动8.0



由于8.0的jar包没有提供org.gjt..]]></description><category></category></item><item><title><![CDATA[ODI代理自启动及虚拟内存修改]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392770</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392770</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 16:53:09 +0800</pubDate><description><![CDATA[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...]]></description><category></category></item><item><title><![CDATA[忘记wallet密码如何登陆ODI]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392537</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392537</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 16:33:58 +0800</pubDate><description><![CDATA[问题

登陆ODI时提示需要输入wallet密码，但wallet密码是啥？？没有wallet密码要怎么登陆ODI呢？（ODI12c在设置可以修改不输入wallet，11g不行）

准备

supervisor的密码
	工作库、资料库的ip及账号密码
详细操作

1、修改supervisor密码（如果记得supervisor密码则忽略这一步）

登录LY_ODI_ZLK
	找到存放SUPERVISOR用户密码的表SNP_USER
	修改加密密码PASS为aIyXs4XyqX56wjphku5y，明文为（123]]></description><category></category></item><item><title><![CDATA[xmlagg函数的使用--课表视图]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392318</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120392318</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 16:18:56 +0800</pubDate><description><![CDATA[需求

将老师一周中同一大节的课表信息整理到同一条记录里，不同星期对应不同的列。(涉及到字符串拼接、行转列)





常见的行转列函数有vm_concat、listagg、xmlagg等，但是oracle12g不支持vm_concat，而且前两个函数在拼接字符串的时候容易出现拼接结果过长、字符串缓冲区过小等问题，难搞。xmlagg就可以完美解决这个问题，拼接字段中出现null也不影响，唯一的不足就是多个null拼接时，xmlagg并不能自动省去，最后需要处理下多余的拼接符号，不然难看。

xmlagg函数]]></description><category></category></item><item><title><![CDATA[oracle多层嵌套后to_number比较数据出现无效数字的错误]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391993</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391993</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 15:56:12 +0800</pubDate><description><![CDATA[select * from (
select
XH ,--学号
case 
when to_number(rxnj) &lt;= 2020 - xz then '不在校'
else '在校'
end as zxzt  --在校状态
FROM xsxx  where rxnj not in ('NULL',' ')
) where zxzt='在校';

在上述例子中，rxnj是varchar2类型，有非纯数字的数据值，xz是number类型，内层查询无报错，但是外层查询就会报错，也就是where条件不起作.]]></description><category></category></item><item><title><![CDATA[odi代理自启动]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391918</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391918</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 15:41:40 +0800</pubDate><description><![CDATA[@echo off
title LY_WL_DL4
pushd  D:\oracle\oracledi\agent\bin  --ODI安装路径
call agent.bat -NAME=LY_WL_DL4 -PORT=21923  --代理名字跟端口
pause


]]></description><category></category></item><item><title><![CDATA[oracle数据库表中文注释显示为乱码]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391537</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120391537</guid><author>Honghui_Wang</author><pubDate>Mon, 20 Sep 2021 15:29:00 +0800</pubDate><description><![CDATA[一般是由于数据库使用的编码跟服务器/电脑的编码不一致导致的，常规处理方法就是设置服务器使用编码跟数据库一致。
查看oracle数据库的编码


SELECT USERENV(‘LANGUAGE’) FROM DUAL;
新建环境变量，或者修改已有的环境变量。设置变量名：NLS_LANG，变量值：  SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者AMERICAN_AMERICA.AL32UTF8（依照实际情况确定变量值），确定即可

...]]></description><category></category></item><item><title><![CDATA[HiveQL：视图]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120385789</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120385789</guid><author>Honghui_Wang</author><pubDate>Sun, 19 Sep 2021 22:44:08 +0800</pubDate><description><![CDATA[当查询语句变得很长或者很难理解时，比如多层嵌套查询，我们可以用视图来降低查询难度。或者我们不想暴露全部的数据，也可以用视图来代替。但目前Hive不支持物化视图。


-- 如果查询语句有确切的字段名，视图名后面的字段列表可省略
create view if not exists orders(id, state, city, part ) 
comment 'select some info from the dynamic table'  --可选
tblproperties('creator'='amb]]></description><category></category></item><item><title><![CDATA[HiveQL：查询]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120381613</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120381613</guid><author>Honghui_Wang</author><pubDate>Sun, 19 Sep 2021 19:21:22 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[HiveQL：加载、导出数据]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120377023</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120377023</guid><author>Honghui_Wang</author><pubDate>Sun, 19 Sep 2021 11:46:47 +0800</pubDate><description><![CDATA[1、向管理表中装载数据

使用load data的方式往表批量加入（Hive不支持行级别的数据操作），有几点需要注意：

local：是从本地文件系统拷贝数据到分布式文件系统上的目标位置，如Hive默认的/user/hive/warehouse/路径下。不带local关键字，是从分布式文件系统上转移到分布式文件系统上的目标位置，如从/home/hadoop到/user/hive/warehouse/，同时要求是在同一个文件系统。
	overwrite：会覆盖掉表中原有的数据。不带overwirte关键字，则]]></description><category></category></item><item><title><![CDATA[HiveQL：数据定义]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120360082</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120360082</guid><author>Honghui_Wang</author><pubDate>Sat, 18 Sep 2021 17:40:23 +0800</pubDate><description><![CDATA[基础

Hive不支持记录级别的更新、插入或者删除操作。不支持OLTP（联机事务处理），更接近OLAP（联机分析技术）工具。但由于Hive查询延时严重，需要使用NoSQL，如Hbase或Cassandra。

一般使用Hive可以通过CLI（命令行界面，用hive来表示），也可以用图形用户界面，如Karmasphere，Cloudera，Hue和Qubole提供的“Hive即服务”。

元数据：Metastore是一个独立的关系型数据库（通常是一个MySQL实例），Hive会在其中保存表模式和其他系统元数据]]></description><category></category></item><item><title><![CDATA[Mac上的Hive安装和配置]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120342305</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120342305</guid><author>Honghui_Wang</author><pubDate>Fri, 17 Sep 2021 10:48:04 +0800</pubDate><description><![CDATA[懒人安装Hive大法，踩了n多坑...

1、安装Hadoop

因为Hadoop对伪程序猿（Java学的不够好）不友好，所以通过Hive来启动MapReduce任务，简单好上手。《Hive编程指南》是这么说的：


Hive所有命令和查询都会进入Driver（驱动模块），通过该模块对输入进行解析编译，对需求的计算进行优化，然后按照指定的步骤执行（通常是启动多个MapReduce的job来执行）。当需要启动MapReduce任务（job）时，Hive本身是不会生成JavaMapReduce算法程序。相反，.]]></description><category></category></item><item><title><![CDATA[Mac安装hadoop--单机模式]]></title><link>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120320849</link><guid>https://blog.youkuaiyun.com/Honghui_Wang/article/details/120320849</guid><author>Honghui_Wang</author><pubDate>Thu, 16 Sep 2021 07:45:17 +0800</pubDate><description><![CDATA[在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..]]></description><category></category></item></channel></rss>