数据库
喜东东cc
分享为主
展开
-
【Hive】MapRedTask报错处理记录
实例1:场景:跑日分区表3年历史数据,SQL为日数据 left join 基本信息的结构。问题:stage-1的reduce跑不动暴力解决方案,直接把reduce tasks的数调大set mapred.reduce.tasks=1000; --可多试几个数值...原创 2021-01-28 16:52:42 · 1816 阅读 · 0 评论 -
【Hive】删除含有特殊符号的分区
一、问题描述由于操作失误,生成了一些含有特殊字符的分区,如:-- 1.插入数据insert overwirte table test partition(dt)select col, '%(data_date)s' as dtfrom src_test;-- 2.查看分区show partitions test;dt=%25(data_date)sdt=2020-08-10dt=2020-08-01...当尝试删除它们的时候,发现怎么也不奏效:-- 尝试1alte原创 2020-08-10 16:41:58 · 2068 阅读 · 0 评论 -
【Hive】生成动态日期序列
一、问题描述已知开始日期和结束日期,动态生成此范围内的日期序列。具体如下:二、解决方案1.原始表 testcreate table test asselect 'A' as id, '2019-01-07' as begin_date, '2019-01-10' as end_dateunion allselect 'A' as id, '2019-01-01' as begin_date, '2019-01-04' as end_dateunion allselect转载 2020-07-23 17:59:40 · 3768 阅读 · 0 评论 -
【Pregsql】多列间横向去重
一、问题选出5列中非空唯一值大于等于2的行,数据如下,目标行为第1行:二、解决1.此问题可看做多列间的横向去重,主要思路:(1)通过array()函数将列变成数组;再通过unnest()把array类型展开成多行;(2)通过子查询语法封装上述数据,进行非空筛选和唯一值统计;代码如下:select *from ( select '1' as col1, '2' as col2, ' ' as col3, '1' as col4, '3' as col5 un转载 2020-07-16 09:03:46 · 474 阅读 · 0 评论 -
【HIVE】UDAF之截尾均值
一、背景 最近在做分析时,一旦数据含有极端值,均值常常异常,对此,试图通过截尾均值解决此问题。 于是提出:在hive中新建一个UDAF(聚类函数),计算一组数值的截尾均值。二、方案 参考percentile()函数MR计算逻辑,通过截尾比例计算出有效数据区间,对有效数据区间求均值。三、实现1.函数源码:UDAFTrimAvg.javaim...原创 2020-04-28 17:40:02 · 981 阅读 · 0 评论 -
【数据仓库】简介
一、背景前段时间刚好从事相关的工作,趁着有空,将相关搜集的资料整合记录分享一下,欢迎大家补充。二、概念数据仓库(Data Warehouse)是一种对数据的管理和使用的方式,它是一整套包括了etl、调度、建模在内的完整的理论体系。[参考]1.十问十答,带你了解数据仓库2.大数据环境下该如何优雅地设计数据分层三、分层架构1.概念(1)数据仓...转载 2020-02-04 17:05:48 · 251 阅读 · 0 评论 -
【Hadoop】VM虚拟机上搭建Hadoop集群
一、背景 这件事做了N次,每次因为各种原因失败(比如,环境配置,hadoop参数设置),终于在春节前夕搞定。 主要流程参照TMH_ITBOY的文章进行,再结合个人需求进行调整。 在此记录和分享一下。二、部署规划三、流程【Step 1】 VMware新建虚拟机补充:(1)VMware 15.0.3下载(2)虚拟机存储位置改...转载 2020-01-23 13:15:00 · 1256 阅读 · 0 评论 -
【HIVE】窗口函数中数据窗口BUG
一、问题1. 单独使用窗口函数sum() over() 计算rows between 1 following and 3 following(假设当前行为x, 数据框应为[x+1, x+3])时,计算结果错误。sum(value) over(partition by name order by sortcol rows between 1 following and 3 followin...原创 2019-12-06 15:03:36 · 458 阅读 · 0 评论 -
【Hive】使用str_to_map代替过长的case when
问题描述:在使用case when 解析身份证前2位户籍地址时,觉得语句太长了(占用行数较多)。于是尝试使用“字典”的概念去替代,即通过str_to_map()将户籍信息写成KV的字典形式。如:(户籍信息太长了,只列出部分)~1. 使用case whenselect case substr(idcard,1,2) when '11' th...原创 2019-11-22 11:21:19 · 883 阅读 · 0 评论 -
【PostgreSQL】函数之百分位数&中位数:percentile_cont()
搜索了很久,实在没找到pg内有关求百分数的内置函数,后来在stackoverflow中找到了创建percentile_cont函数的代码: 一、创建percentile_cont函数创建array_sort () <用于数组排序>CREATE OR REPLACE FUNCTION array_sort (ANYARRAY)RETURNS ANYARRAY LA...翻译 2018-06-11 13:08:48 · 22386 阅读 · 1 评论 -
【Spark】def函数中参数为RDD
【参考】1.Scala定义函数的5种方式2.Spark RDD如何作为参数传递给函数3.scala函数定义与使用1.说明 最近在学习Spark(scala),在使用def自定义函数时,遇到传入RDD[String]类型报错,在此记录和分享一下我的解决方法。 data为从txt读入的多组年龄数据(格式为序号+年龄),Average函数的任务是解析出...原创 2019-07-24 14:10:40 · 1433 阅读 · 0 评论 -
【Neo4j】在windows下安装Neo4j
1、官网下载最新版本注意系统匹配 2、解压至指定目录eg.E:\download\neo4j-community-3.4.5-windows 3、配置系统环境变量我的电脑→属性→高级系统设置→高级→环境变量 新建变量:NEO4J_HOME,变量值:E:\download\neo4j-community-3.4.5-windows 修改变量:path,增加值:%N...原创 2018-08-16 11:15:32 · 4060 阅读 · 0 评论 -
【T-SQL】排名
一、row_number1、简介 设置数字结果的输出。 更具体地说,返回的顺序中分区的结果集,从每个分区中的第一行的 1 开始的行数。ROW_NUMBER和RANK类似。 ROW_NUMBER所有数字按顺序都行 (例如 1、 2、 3、 4、 5)。 RANK对于版本号 (例如 1、 2、 2、 4、 5) 提供的数值相同。这个函数的功能是为查询出来的每一行记录生成一个序号。2、语法...原创 2018-05-23 14:55:28 · 151 阅读 · 0 评论 -
【T-SQL】财务PMT+PV函数
公式与excel中的PMT和PV函数类似。PMTcreate function pv(@rate decimal(18,6),@nper int,@pmt numeric(20,4))returns numeric(20,4)asbegin return @pmt*(1-power(1+@rate,-@nper))/@rateendPVcreate function ...原创 2018-05-22 18:30:04 · 1519 阅读 · 0 评论 -
【Hive】快速查看表的行数
发现一个查看表行数的方法,即利用EXPLAIN命令,通过查看查询的执行计划中的TableScan操作中的Statistics得知数据量。例如:[IN]explainselect * from test_tab;[OUT]...原创 2019-10-09 09:39:18 · 11560 阅读 · 2 评论 -
【Hive】查看表/分区更新时间
1.查看分区hive> show partitions table_name;2.extended查看表/分区最新更新时间< transient_lastDdlTime : unix时间戳>hive> desc extended table_name; hive> desc extended table_name partition(partitio...原创 2018-05-30 09:57:50 · 21533 阅读 · 9 评论 -
【Hive】文本中的特殊字符处理\t\r\n
这几天处理存储于json字段中的html文本,碰到特殊字符导致数据与字段错位,很是烦躁。 \t:tab,跳格(移至下一列) \r:回车 \n:换行解决方法: 1、修改表存储格式<失败> 2、regexp_replace<替换>hive> select regexp_replace('\t abc \n def \r hij', '\n|\t|\r',...原创 2018-05-29 18:00:10 · 28117 阅读 · 0 评论 -
【Hive】转义[
转义方括号[:\\[hive> select regexp_replace('[]', '\\[|\\]',',') ;结果: ,,原创 2018-05-29 17:25:46 · 2038 阅读 · 0 评论 -
【Hive】分号;
今天遇到一个很诡异的现象。 在data字段中解析question字段时,出现结果集字段值错位。分号是sql的结束符,在hql中亦如此,但是hive对分号的识别没有那么智能,如下:select concat(‘;’,’aa’) from lhc limit 1;FAILED: Parse Error: line 1:13 cannot recognize input near ‘’ ‘...转载 2018-05-30 13:13:03 · 2101 阅读 · 0 评论 -
【Hive】like + 转义字符
如果需要用like来匹配字符串中的特殊字符,eg.?, \ ,/。需要对其做转义,否则会当做正则表达被处理。hive> select channel from test;a?bca_bca.bchive> select channel from test where channel like '%\?%'a?bchive> select channel fro...原创 2018-05-23 10:13:18 · 8807 阅读 · 0 评论 -
【Hive】order by count() 报错
order by count(id) 报错hive> select date, count(id) as idnum from test group by date order by count(id)FAILED:SemanticException[Error 10004]:...Invalid table alias or column reference 'id':(possib...原创 2018-05-22 18:07:35 · 5027 阅读 · 3 评论 -
【Hive】split函数(分割字符串)
语法: split(string str, string pat) 返回值: array 说明: 按照pat字符串分割str,会返回分割后的字符串数组 举例: 1.基本用法hive&gt; select split('abcdef', 'c') from test;["ab", "def"]2.截取字符串中的某个值hive&gt; select split('ab...原创 2018-05-22 17:15:36 · 145199 阅读 · 5 评论 -
【Hive】连续几日的计算逻辑
1.问题计算员工日销量大于500元的连续天数。2.解决2.1 思路step1:对全量数据排序,得到序号rn1;step2:对满足条件的数据排序,得到序号rn2;step3:求两个序号的差值,即rn1-rn2(若为连续,则为等差,且差值相等);step4:group by 序号的差值,得到连续天数;2.2 代码select emp_no, sale,...原创 2019-09-12 15:22:24 · 858 阅读 · 0 评论 -
【Hive】查看表的基本信息(comment,created_at,creator, transient_lastDdlTime)
1.前言原本只是想简简单单查一下表的基本信息(如表的注释、创建时间等),然后汇总一下便于查看。结果搜索加尝试了半天,要么就desc tablename只能看表结构,desc formatted tablename 的comment中文乱码。后面终于找到解决我需求的方法↓↓↓2.解决SHOW TBLPROPERTIES table_name;...原创 2019-08-29 17:27:34 · 7714 阅读 · 3 评论 -
【Hive】生成K-V格式的数据
1.方法一map函数[input]select map('key1','value1', 'key2','value2')[out]{'key1':'value1', 'key2':'value2'}附属函数还有:str_to_map,map_keys,map_values,size2.方法二:用concat、concat_ws拼接...原创 2019-08-20 17:43:51 · 836 阅读 · 0 评论 -
【Hive】窗口函数
(每次使用窗口函数时,老是忘记窗口中rows的语法,所以有了以下简化版的备忘录。)一、概念窗口函数,即根据语法结构组织特定的数据框,计算指定的统计指标值:-- 语法结构函数(字段) over([partition by 分组字段] [order by 排序字段] [rows betweenunbounded preceding andunbounded following])...原创 2019-04-22 18:27:18 · 368 阅读 · 0 评论 -
【Hive】ifnull/nullif = coalesce/if
一、说明 hive中没有ifnull/nullif函数。 可用以下替代: - coalesce( value1,value2,… ) - if( value1 is null, value2, value1) 二、举例hive> select coalesce(col1, col2, cols) as res1, if(col1 is null, if(col2 i...原创 2018-06-15 08:58:20 · 11359 阅读 · 0 评论 -
【Hive】load数据,跳过第一行
一、语句 在建表时,进行如下参数设置。tblproperties("skip.header.line.count"="n", --跳过文件行首n行"skip.footer.line.count"="n" --跳过文件行尾n行 ) 二、举例create table test(id int commet 'id',name string commet '姓名')...原创 2018-06-01 15:19:52 · 8913 阅读 · 1 评论 -
【Hive】解析json(get_json_object)
get_json_object(string json_string, string path)说明: 第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;如果输入的json字符串无效,那么返回NULL。 每次只能返回一个数据项。举例: data 为 test表中的字段,数据结构如下: data ={ "store":...原创 2018-05-25 17:37:27 · 199658 阅读 · 20 评论 -
【Hive】NVL函数
NVL(expr1, expr2): 1、空值转换函数; 2、类似于mysql-nullif(expr1, expr2),sqlserver-ifnull(expr1, expr2)。备注: 1、如果expr1为NULL,返回值为 expr2,否则返回expr1。 2、适用于数字型、字符型和日期型,但是expr1和expr2的数据类型必须为同类型。...原创 2018-05-22 10:59:12 · 63388 阅读 · 5 评论 -
【Hive】join...on...=inner join...on...
单写 join=inner join原创 2018-05-15 15:19:40 · 1924 阅读 · 0 评论 -
【Hive】累乘 和 累加
通过窗口函数在Hive中实现累加和累乘。如下:1.依据date的顺序,对col分别进行累加和累乘;2.在累乘过程中,由于进行了log转换,存在较小精度损失,用round()进行处理四舍五入处理;3.rows between unbounded preceding and current row 表示窗口的范围在当前行及前面所有行;select col , sum...原创 2018-12-26 09:34:15 · 5309 阅读 · 1 评论 -
【Hive】多列最大值 或 数组最大值
max()函数是针对单列多行求最大值。当我们想要对多列同行之间进行比较时,可以尝试以下办法:1.先将数值转换成数组array(),再对数组排序sort_array(),通过负值使其为降序;select -sort_array(array(-a,-b,-c))[0] as max_valuefrom ( select 1 as a, 3 as b, 2 as c) as da...原创 2018-11-08 09:39:03 · 16323 阅读 · 0 评论 -
【Hive】partition分区日期值错误
insert overwrite table test1 partition(date)select date as date1, date from test2执行类似以上sql时,最终跑出来的date1值没有问题,但是分区字段date则会+1day,出现值错误,很诡异;找了很久原因,失败告终,最终使用一个很白痴的方法解决:date_add(date_add(date, -1), ...原创 2018-10-15 14:27:35 · 2393 阅读 · 0 评论 -
【Hive】to_date(null)报错
Hive的一个BUG,to_date()不接受NULL值,可先对NULL转换数据格式:select to_date(cast(null as timestamp));https://issues.apache.org/jira/browse/HIVE-12502转载 2018-10-09 13:35:25 · 3454 阅读 · 0 评论 -
【Hive】报错:execution failed with exit status:1之 java.lang.outofmemoryerror: java heap space
小数据查询时,一直报错:execution failed with exit status:1然后,根据提示,找到本地日志文件,发现错误原因为:java.lang.outofmemoryerror: java heap space即namenode内存空间不够,jvm不够新job启动导致,回溯发现为开启了Hive的本地模式set hive.exec.mode.local.auto=...原创 2018-07-09 14:43:05 · 1249 阅读 · 0 评论 -
【Hive】报错:Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
set hive.auto.convert.join=false原创 2018-07-03 18:02:21 · 1245 阅读 · 0 评论 -
【Hive】join中的模糊匹配(locate)
HIVE不支持非等值连接,但可以通过locate()函数进行功能转换。 locate(string substr, string str[, int pos]) 查找字符串str中的pos位置后字符串substr第一次出现的位置,若为找到,则返回0。hive> select locate('a','abcd'), locate('b', 'abcd'), locate('f', ...原创 2018-06-01 16:54:11 · 22878 阅读 · 1 评论 -
【Hive】变量
一、命名空间Hive的命名空间:hiveconf,system,env,hivevar二、变量对于使用hivevar,前缀是可有可无的,但是对于使用命名空间如hiveconf,system,env的,前缀则不可少。1、hivevarshell:cli:hive> set hivevar:date='2018-01-01';hive> select * from test where ...原创 2018-05-21 14:56:06 · 2287 阅读 · 0 评论 -
【Hive】分箱
一.等距分箱/等宽分箱1.概念:将变量的取值范围分为k个等宽的区间,每个区间当作一个分箱。2.方法 数学运算:通过向上取整ceil() 和 向下取整floor() -- 对col进行0.1宽度的分箱select col, ceil(col*10)/10 as group1, floor(col*10)/10 as group2from( select stock(5...原创 2018-10-08 14:14:02 · 7156 阅读 · 1 评论