<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yjgithub的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/yjgithub</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; yjgithub]]></copyright><item><title><![CDATA[哈希MurmurHash算法详解]]></title><link>https://blog.csdn.net/yjgithub/article/details/120447399</link><guid>https://blog.csdn.net/yjgithub/article/details/120447399</guid><author>yjgithub</author><pubDate>Fri, 24 Sep 2021 08:39:09 +0800</pubDate><description><![CDATA[文章目录一、哈希函数定义特点应用常见哈希算法二、murmurhash定义特点应用介绍三、MurmurHash使用四、性能测试
MurmurHash：(multiply and rotate) and (multiply and rotate) Hash，乘法和旋转的hash 算法。
一、哈希函数
定义
散列函数（英语：Hash function）又称散列算法、哈希函数，是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要，使得数据量变小，将数据的格式固定下来。该函数将数据打乱混合]]></description><category></category></item><item><title><![CDATA[hive 窗口函数]]></title><link>https://blog.csdn.net/yjgithub/article/details/119993918</link><guid>https://blog.csdn.net/yjgithub/article/details/119993918</guid><author>yjgithub</author><pubDate>Mon, 30 Aug 2021 11:48:15 +0800</pubDate><description><![CDATA[文章目录sum,avg,min,max 函数row_number,rank,dense_rank,ntile 函数lag,lead,first_value,last_value 函数grouping sets,grouping_id,cube,rollup 函数
在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数。]]></description><category></category></item><item><title><![CDATA[shell命令执行顺序]]></title><link>https://blog.csdn.net/yjgithub/article/details/118904385</link><guid>https://blog.csdn.net/yjgithub/article/details/118904385</guid><author>yjgithub</author><pubDate>Mon, 19 Jul 2021 17:19:01 +0800</pubDate><description><![CDATA[command1 ; command2  --两条命令,连续执行,command2不需要考虑command1的结果
command1 &amp;&amp; command2 --command1执行没有出错(即回传值为0),command2才执行
command1  || command2  --command1执行出错才执行command2

]]></description><category></category></item><item><title><![CDATA[Hive增加固定列]]></title><link>https://blog.csdn.net/yjgithub/article/details/118184093</link><guid>https://blog.csdn.net/yjgithub/article/details/118184093</guid><author>yjgithub</author><pubDate>Thu, 24 Jun 2021 12:10:39 +0800</pubDate><description><![CDATA[需求
同时查出各部门的工资以及公司的总工资
with a as ( select sum(sal) `total sal` from tb_emp)
select deptno,
       sum(sal) over (distribute by deptno),
       a.`total sal`
from tb_emp,a;


±-----±----±--------+
|deptno|c1   |total sal|
±-----±----±--------+
|NULL  |NULL |]]></description><category></category></item><item><title><![CDATA[group by后面不能使用列的别名分析]]></title><link>https://blog.csdn.net/yjgithub/article/details/118183820</link><guid>https://blog.csdn.net/yjgithub/article/details/118183820</guid><author>yjgithub</author><pubDate>Thu, 24 Jun 2021 12:03:53 +0800</pubDate><description><![CDATA[文章目录复现解决
复现
select deptno `dept`,
       year(hiredate) `year`,
       sum(sal)
from tb_emp
group by deptno,year;


org.apache.hadoop.hive.ql.parse.SemanticException:Line 5:16 Invalid
table alias or column reference ‘year’: (possible column names are:
empn]]></description><category></category></item><item><title><![CDATA[[Hadoop]数据复制distcp vs cp]]></title><link>https://blog.csdn.net/yjgithub/article/details/117328969</link><guid>https://blog.csdn.net/yjgithub/article/details/117328969</guid><author>yjgithub</author><pubDate>Thu, 27 May 2021 15:07:07 +0800</pubDate><description><![CDATA[1.需求
我们项目中需要复制一个大文件，最开始使用的是hadoop cp命令，但是随着文件越来越大，拷贝的时间也水涨船高。下面进行hadoop cp与hadoop distcp拷贝时间上的一个对比。我们将11.9G的文件从data_group/adv/day=20210526下所有文件复制到tmp/data_group/adv/day=20210526/文件下
1.1 查看文件大小
hadoop fs -du -s -h data_group/adv/day=20210526
11.9 G  data_gr]]></description><category></category></item><item><title><![CDATA[hive group by | distinct区别以及性能比较]]></title><link>https://blog.csdn.net/yjgithub/article/details/115335315</link><guid>https://blog.csdn.net/yjgithub/article/details/115335315</guid><author>yjgithub</author><pubDate>Tue, 30 Mar 2021 20:43:37 +0800</pubDate><description><![CDATA[文章目录Hive去重统计实际论证DistinctGroup by小结结论
Hive去重统计
去重方式：

Distinct
Group by

实际论证
order_snap为订单的快照表 总记录条数763191489，即将近8亿条记录,总大小:108.877GB,存储的是公司所有的订单信息，表的字段大概有20个,其中订单号是没有重复的,所以在统计总共有多少订单号的时候去重不去重结果都一样，我们来看看:
统计所有的订单有多少条条数，一个count函数就可以搞定的sql性能如何。
Distinct
selec]]></description><category></category></item><item><title><![CDATA[磁盘挂载工程师]]></title><link>https://blog.csdn.net/yjgithub/article/details/111386630</link><guid>https://blog.csdn.net/yjgithub/article/details/111386630</guid><author>yjgithub</author><pubDate>Fri, 18 Dec 2020 17:46:27 +0800</pubDate><description><![CDATA[文章目录关键命令一、检查挂载盘二、开始操作
关键命令
# 查看可用块
lsblk -f
# 硬盘分区工具，对/dev/nvme0n1硬盘执行分区操作，执行: [n] [p] [1] [] [] [w]
fdisk /dev/nvme0n1
# 格式化分区的文件系统为xfs
mkfs.xfs /dev/nvme0n1p1
# 修改分区的目录挂载（系统启动时会自动加载这个文件挂载）
vim /etc/fstab
# 刷新挂载数据
mount -a
# 查看挂载成果
df -h

一、检查挂载盘
（1）执行 df]]></description><category></category></item><item><title><![CDATA[Spark读取数据及保存数据]]></title><link>https://blog.csdn.net/yjgithub/article/details/106768139</link><guid>https://blog.csdn.net/yjgithub/article/details/106768139</guid><author>yjgithub</author><pubDate>Mon, 15 Jun 2020 18:01:31 +0800</pubDate><description><![CDATA[文章目录创建SparkSession读取数据jdbcjsoncsvparquet保存数据
创建SparkSession
sparkSQl 可以读取不同数据源的数据，比如jdbc,json,csv,parquet
执行读操作就用sparkSession.read.文件类型，执行写操作就用SparkSession.write.文件类型
首先创建一个SparkSession：
val spark = SparkSession.builder().appName("load data")
      .master]]></description><category></category></item><item><title><![CDATA[hive join on 条件 与 where 条件区别]]></title><link>https://blog.csdn.net/yjgithub/article/details/106490609</link><guid>https://blog.csdn.net/yjgithub/article/details/106490609</guid><author>yjgithub</author><pubDate>Tue, 02 Jun 2020 10:41:47 +0800</pubDate><description><![CDATA[文章目录背景业务场景结论
背景
最近项目组上，来了几个实习生，对 Hive sql 的 join 的使用不是很熟悉，几个人写出来的sql 看上去感觉都是一样的，但结果可能会出现，扫描全表，耗时过久，造成数据有所有差异
业务场景
根据常见的场景，写了几条sql ，看 on 和 where 的作用域  ，查询 事实表 a  中的在 20200602 这天的数据，维度表 b
对于上述的这种需求 ，有可能会出现下列这几种sql
1.  select * from a left join b on a.id = b.]]></description><category></category></item><item><title><![CDATA[Hive 删除操作]]></title><link>https://blog.csdn.net/yjgithub/article/details/105198114</link><guid>https://blog.csdn.net/yjgithub/article/details/105198114</guid><author>yjgithub</author><pubDate>Mon, 30 Mar 2020 14:04:50 +0800</pubDate><description><![CDATA[文章目录删除库强制删除库删除表清空表删除分区按条件删除数据
删除库
drop database if exists db_name;

强制删除库
drop database if exists db_name cascade;

删除表
drop table if exists employee;

清空表
truncate table employee;

清空表，第二种方式
insert o...]]></description><category></category></item><item><title><![CDATA[hive SQL COALESCE 函数]]></title><link>https://blog.csdn.net/yjgithub/article/details/104796304</link><guid>https://blog.csdn.net/yjgithub/article/details/104796304</guid><author>yjgithub</author><pubDate>Wed, 11 Mar 2020 14:35:22 +0800</pubDate><description><![CDATA[文章目录COALESCE函数使用实例
COALESCE函数
COALESCE是一个函数， (expression_1, expression_2, …,expression_n)依次参考各参数表达式，遇到非null值即停止并返回该值。如果所有的表达式都是空值，最终将返回一个空值。
比如我们要登记用户的电话，数据库中包含他的person_tel,home_tel,office_tel,我们只要取一个...]]></description><category></category></item><item><title><![CDATA[Lambda架构]]></title><link>https://blog.csdn.net/yjgithub/article/details/103891155</link><guid>https://blog.csdn.net/yjgithub/article/details/103891155</guid><author>yjgithub</author><pubDate>Wed, 08 Jan 2020 14:44:25 +0800</pubDate><description><![CDATA[文章目录1.背景2.为什么要用 Lambda Architecture3.组成3.1 Batch Layer3.2 Speed Layer3.3 Serving Layer4.Lambda Architecture的收益
1.背景
Q : 大数据系统的关键问题：如何实时地在任意大数据集上进行查询
A : 最简单的方法是，直接在全体数据集上运行查询函数得到结果，但是这种方法的计算代码太大，所以不现实...]]></description><category></category></item><item><title><![CDATA[docker中vi后按键混乱的bug]]></title><link>https://blog.csdn.net/yjgithub/article/details/103713944</link><guid>https://blog.csdn.net/yjgithub/article/details/103713944</guid><author>yjgithub</author><pubDate>Thu, 26 Dec 2019 13:37:31 +0800</pubDate><description><![CDATA[docker下安装vi，按方向键变成了输入 A B C D,解决方案：
echo "set nocompatible" &gt;~/.vimrc
echo "set backspace=indent,eol,start" &gt;&gt;~/.vimrc
echo "set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936" &gt;&gt;...]]></description><category></category></item><item><title><![CDATA[复制不能转载的文章]]></title><link>https://blog.csdn.net/yjgithub/article/details/91582594</link><guid>https://blog.csdn.net/yjgithub/article/details/91582594</guid><author>yjgithub</author><pubDate>Wed, 12 Jun 2019 18:09:26 +0800</pubDate><description><![CDATA[1.在chrome下禁用js可复制文章, 操作如下
2.用Chrome打开要复制的页面，按顺序 F12 – F1 – 在最下面的 Debugger 里面点选 Disable JavaScript，即时生效，直接复制。

...]]></description><category></category></item><item><title><![CDATA[简化跳板机操作]]></title><link>https://blog.csdn.net/yjgithub/article/details/90899313</link><guid>https://blog.csdn.net/yjgithub/article/details/90899313</guid><author>yjgithub</author><pubDate>Wed, 05 Jun 2019 11:18:55 +0800</pubDate><description><![CDATA[公司机器需要经由跳板机登录,这造成了以下日常操作变得繁琐
两次登录: 需要先登录跳板机，再由跳板机登录目的机器
拷贝文件: 需要先拷贝到跳板机，再由跳板机拷贝到目的机器(或本地)
查看集群内web服务: 需要登录远程桌面，在远程桌面浏览器中使用
本文将介绍一些ssh使用技巧，使得跳板机对用户透明，简化日常操作
Prelude(需自行配置免密登录)
无密码登录
将自己的public key写入目标机...]]></description><category></category></item><item><title><![CDATA[shell 脚本string的替换]]></title><link>https://blog.csdn.net/yjgithub/article/details/88800797</link><guid>https://blog.csdn.net/yjgithub/article/details/88800797</guid><author>yjgithub</author><pubDate>Mon, 25 Mar 2019 17:41:41 +0800</pubDate><description><![CDATA[1. 基本的替换
:s/vivian/sky/替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
（n 为数字，若 n 为...]]></description><category></category></item><item><title><![CDATA[concat拼接字段注意躲避空值坑]]></title><link>https://blog.csdn.net/yjgithub/article/details/86526836</link><guid>https://blog.csdn.net/yjgithub/article/details/86526836</guid><author>yjgithub</author><pubDate>Thu, 17 Jan 2019 16:28:07 +0800</pubDate><description><![CDATA[select concat(t1.clo1,t1.clo2,t1.clo3) from tableName t1；
select concat(nvl(t1.clo1,''),nvl(t1.clo2,''),nvl(t1.clo3,'')) from tableName t1；

如果三个字段都不为空，可以直接使用第一个语句获取拼接字段
若三个字段中包含空值，则使用第一个语句获取的拼接字段为空值，...]]></description><category></category></item><item><title><![CDATA[linux流量分析]]></title><link>https://blog.csdn.net/yjgithub/article/details/85617502</link><guid>https://blog.csdn.net/yjgithub/article/details/85617502</guid><author>yjgithub</author><pubDate>Wed, 02 Jan 2019 15:10:01 +0800</pubDate><description><![CDATA[目录
1.案例分析
2.命令详解
1.案例分析
查看流量端口号
sudo iftop -i -P 
    n-&amp;gt; 显示主机ip和主机名
	N-&amp;gt; 显示端口号或者端口服务名称
	P-&amp;gt; 暂定或者继续

根据端口号查询进程
netstat -nap | grep port
查看进程信息：
ps -aux | grep pid
2.命令详解
2.1 iftop
2.1.1  运行if...]]></description><category></category></item><item><title><![CDATA[shell时间操作]]></title><link>https://blog.csdn.net/yjgithub/article/details/84976921</link><guid>https://blog.csdn.net/yjgithub/article/details/84976921</guid><author>yjgithub</author><pubDate>Wed, 12 Dec 2018 17:53:15 +0800</pubDate><description><![CDATA[备忘录
Linux下时间转换的一些命令：
date +%s   可以得到UNIX的时间戳;
用shell将日期时间与时间戳互转：
date -d “2015-08-04 00:00:00” +%s     输出：1438617600
而时间戳转换为字符串可以这样做：
date -d @1438617600  “+%Y-%m-%d”    输出：2015-08-04
如果需要得到指定日期的前后几天：...]]></description><category></category></item></channel></rss>