自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

人的大脑是cpu,而不是硬盘

数据很乱,结果很美

  • 博客(99)
  • 资源 (2)
  • 收藏
  • 关注

原创 beeline提交sql,执行日志内容获取不到?

为了直接能获取到hive insert语句插入的行数,通过获取日志的方式避免count通过下面的命令就可以直接获取执行结果count=`echo "$hql" | beeline -u "jdbc:hive2://cdh003:10000" 2>&1 |grep affected |awk '{print $1}'|awk 'END {print}'`...

2022-05-30 16:04:30 638

原创 Flink是什么?

1.一个分布式流处理引擎。2.有批处理,流处理和表查询操作。3.由Jobmanager,Taskmanager,slot组成

2021-11-06 16:21:08 1031

原创 百度账号更换绑定的手机号

问题:因为无法验证原手机号,导致无法百度账号更换绑定的手机号原因:更换手机号前,把用到的账号所绑定的手机号都更改过来,不要立马就去注销,省那几十块话费,会给你带来很多麻烦解决步骤:1.下载度小满金融2.度小满里选择实名认证,会让你先绑定银行卡。绑定了银行卡就行了都不用身份证认证3.点击头像里面手机符号,显示的是以前的老手机号,选择修改手机号。跳出的验证方式里,除了手机短信验证之外,会多一个银行卡验证。4.选银行验证,按步骤一步一步填写,就改好了...

2021-11-06 14:02:21 1523

原创 spark shuffle

hashShuffle优化sortShuffle优化:bypass sortShuffle1.每个task输出数据在内存中,缓冲为(shufflereduce task个数)份2.之后每份内存缓冲都写到一个磁盘文件中3.所有磁盘文件合并为一个磁盘文件,并生成一个索引文件记录每个磁盘文件在合并文件中的起始位置和对应reduce4.reduce根据索引去合并文件中拉取对应数据...

2021-07-01 23:04:27 115 2

原创 Hive优化

1)MapJoin把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很多2)行列过滤列处理:只拿需要的列,分区行处理:过滤条件写在Where后面3)列式存储4)采用分区技术5)合理设置Map数mapred.min.split.size: 默认1Bmapred.max.split.size: 默认256MB减小max可以增加map数,增大max可以减...

2021-07-01 15:23:05 106

原创 mapjoin

把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很多

2021-06-29 14:45:15 72

原创 数仓-ADS-用户留存率

insert overwrite table ads_user_retentionselect * from ads_user_retentionunionselect '2021-06-14', login_date_first create_date, datediff('2021-06-14',login_date_first) retention_day, sum(if(login_date_last='2021-06-14',1,0)) retentio...

2021-06-28 15:15:20 213

原创 数仓-ADS-商品统计

任然是老套路later view explode +case when then endinsert overwrite table ads_order_spu_statsselect * from ads_order_spu_statsunionselect '2021-06-14' dt, recent_days, spu_id, spu_name, tm_id, tm_name, category3_id, category3

2021-06-27 22:06:21 86

原创 数仓-ADS-品牌复购率

这里利用了 炸裂后的多行数据recent_days,来筛选出对应天数的数据lateral view explode(Array(1,7,30)) tmp as recent_days where dt>=date_add('2021-06-14',-29) and dt>=date_add('2021-06-14',-recent_days+1)insert overwrite table ads_repeat_purchaseselect * fro...

2021-06-27 21:59:58 210

原创 数仓-ADS-订单统计(GMV)

insert overwrite table ads_order_totalselect * from ads_order_totalunionselect '2021-06-14', recent_days, sum(order_count) order_count, sum(order_final_amount) order_final_amount, sum(if(order_count>0,1,0)) order_user_countfrom.

2021-06-27 20:24:52 299

原创 数仓-ADS-各地区订单统计

接口是一种规范,xxx likea xxx接口是对一类事物的共同能力的提取(包括这种能力的方法和统一属性规范),解决单继承的局限接口,没有构造器,因此不会使用到super,可以多继承接口创建接口的匿名实现类的非匿名对象USB usb = new USB(){ @override public void start(){ System.out.plintln("接口的匿名实现类的匿名对象"); }};抽象是对一类事物的共同属性和...

2021-06-27 16:33:28 113

原创 hive窗口函数

1.Windowing functionslag(col,n,‘x’):往前第n行数据,如果前面没有用’x’代替,The number of rows to lag can optionally be specified. If the number of rows to lag is not specified, the lag is one row.Returns null when the lag for the current row extends before the beginning.

2021-06-27 09:18:13 58

原创 数仓-ADS-会话

sourceexec tailDir netcat spoolDirectory avrochannelsink拦截器

2021-06-23 18:02:06 121

原创 查看hdfs安全模式是否退出

hdfs dfsadmin -safemode wait

2021-06-16 22:49:14 71

原创 hive中的with as

语法WITH t1 AS ( SELECT * FROM a ), t2 AS ( SELECT * FROM b )SELECT *FROM t1一次分析,多次使用,这也是为什么会提供性能的地方,达到了“少读”的目标。待验证:with as 是提高了可读性,可若是后面多次利用这个片段,那完整的SQL就会异常庞大,放在大数据Hive中,job数量甚至会翻几倍with不适合过大的表,会落盘,频繁shuffle ,过大时直接落表更好。...

2021-06-16 11:28:56 377

原创 用户行为日志数据

类型:启动:启动入口(图标,通知,安装后启动),启动加载时间,开屏广告,广告播放时间,用户跳过时间,启动时间曝光:曝光类型(商品推广,算法推荐,查询结果,促销活动),曝光对象类型(商品,活动),曝光对象id,曝光顺序,曝光位置页面:页面id(首页,商品列表页,搜索页,购物车页,支付页),上页id(商品列表),页面对象类型(商品),页面对象id,页面来源类型(商品推广,算法推荐,查询结果,促销活动),停留时间,跳入时间事件:动作id(领卷,收藏,加购,下单),动作目标类型(优惠卷),动作目标i

2021-06-13 18:03:01 449

原创 环境变量的加载说明

登录模式:使用账号密码登录后执行命令,login shell,加载/etc/profile,调用/etc/profile.d/*.sh非登录模式:使用ssh方式远程执行命令,nologin shell,加载~/.bashrc,调用/etc/bashrc,调用/etc/profile.d/*.sh而/etc/profile和~/.bashrc中都会调用/etc/profile.d/*.sh因此将环境变量配置在/etc/profile.d目录下,登录和非登录模式都可以读取到...

2021-06-12 11:03:12 196

原创 创建线程的四种方法

1.继承thread①将当前线程要执行的操作声明在run()内②实例化Thread类的子类,调用其start():启动线程、调用当前线程的run()2.实现runable:①类可以实现多个接口;但是只能继承一个父类② 实现的方式更方便的来处理有共享数据的情况3.实现callable:①可以在cal方法中抛出异常,更灵活②call相对于run方法可以有返回值③可以通过泛型指定返回值的确定类型4.使用线程池:①降低了资源消耗,使用完可以被复用②提高了程序响应速度

2021-06-06 21:47:34 64

原创 wait和sleep的异同

相同点:一旦执行,当前线程进入阻塞状态不同点:①定义方法所属的类:sleep():Thead中定义;wait():Object中定义②使用范围不同:sleep()可以在任何需要使用的位置被调用;wait()必须使用在同步代码块或者同步方法中③释放监视器操作不同:sleep()不会释放监视器;wait()会释放同步监视器④结束等待的方式不同:sleep()到指定时间自动结束;wait需要调用notify()/notifyAll()唤醒,进而结束阻塞...

2021-06-06 21:21:28 59

原创 零散

非静态代码块随着对象的创建而执行

2021-06-06 08:11:33 80

原创 基本数据类型的自动装箱

当自动装箱的int值在[-128,+127]范围内时,使用Integer底层共享的IntegerCache数组中的元素因此:Integer m = 1; Integer n = 1; m和n的地址值相同。

2021-06-05 17:16:17 64

原创 取巧的字符统计

int[] count = new int[26];//记录各个小写的字符出现的次数 // 字母-97后的值为count的角标,次数为count的值 for(int i = 0 ;i < arr.length;i++){ //'a' : 97 count[arr[i] - 97]++; } //将角标+97恢复字母的原型 for(int i = 0;i < count.length;i++){ if(count[i] != 0){ Sys...

2021-06-04 16:12:12 29

原创 break,continue可以结束指定的循环

label:for(int i = 1;i <= 4;i++){ for(int j = 1;j <= 10;j++){ if(j % 4 == 0){ //break; //默认结束的是包裹其最近的一层循环! //continue;//默认结束的是包裹其最近的一层循环的当次! //break label;//结束指定标签代表的循环结构 continue label;//结束指定标签代表的循环结构的当次循环 }.

2021-06-01 21:39:50 194

原创 质数生成,体会不同的实现方式的,执行效率

public static void main(String[] args) { long start = System.currentTimeMillis();//获取当前时间的毫秒数 int count = 0;//记录质数的个数 for(int i = 2;i <= 100000;i++){ boolean isFlag = true;//标识是否没有被除尽过。 for(int j = 2;j < i;j++){//遍历从2开始,到i - 1 范.

2021-06-01 21:09:17 77

原创 switchcase案例

根据输入的月,日,输出是一年的哪一天Scanner scan = new Scanner(System.in); System.out.println("请输入month:"); int month = scan.nextInt(); System.out.println("请输入day:"); int day = scan.nextInt(); // 利用不加break,case到的项后面会继续执行的原理,将后面的

2021-06-01 15:58:08 162

原创 使用scanner类

① 导入Scanner类:import java.util.Scanner;② 实例化Scanner类:Scanner scan = new Scanner(System.in);③ 获取具体类型变量,使用具体的方法即可。 Scanner scan = new Scanner(System.in); System.out.println("请输入你的姓名:"); String name = scan.next(); System.out.println("请输入你的年

2021-06-01 10:28:32 50

原创 三元运算符和if else

三元运算符都可以改写为if-else结构。反之,if-else结构并不都能改写为三元运算符的方式! 当二者都可以使用时,建议使用三元运算符,因为执行效率稍高!

2021-06-01 10:16:02 164

原创 位运算

<< : 在一定范围内,每向左移动一位,相当于原有的数据 * 2。 ----->过犹不及 >> : 在一定范围内,每向左移动一位,相当于原有的数据 / 2。 如果是正数右移,高位补0 如果是负数右移,高位补1 >>> : 无符号右移。不管是正数,还是负数右移,高位都补0。交换两个变量的值位运算: ① 可读性差 ③ 只适用于数值类型 m = m ^ n; n = m ^ n;...

2021-06-01 09:48:48 26

原创 泛型

1.用于指定方法或类可以接受任意类型参数2.不可变C[T]:无论A和B是什么关系,C[A]和C[B]没有从属关系3.协变+C[+T]:如果A是B的子类,那么C[A]是C[B]的子类4.逆变-C[-T]:如果A是B的子类,那么C[B]是C[A]的子类5.上界在 Java 里表示某个类型是 A 类型的子类型:<T extends A> , 或用通配符的形式:<? extends A>在 scala 里表示某个类型是 A 类型的子类型,:[T &lt..

2021-06-01 08:17:08 37

原创 ordering和ordered

ordering:实现comparator接口的类,外部比较器,自定义,较灵活ordered:实现Comparable接口的类,其对象具有了可比较性;内部比较器,相同类型间的比较方

2021-06-01 07:32:45 96

原创 基本数据类型容量大小和所占字节

容量大小比较和所占字节数byte(1)/short(2)/char(2) < int(4) < long(8) < float(4) <double(8)补充:byte/short/char运算时,结果为int类型

2021-05-31 23:14:12 109

原创 前++和后++,++,+=类型操作需注意数据类型不变

m=10n=m++,先赋值,再运算1)n=m=10,m=m+1=11n=++m,先运算,再赋值1)m=m+1=11,n=m=11

2021-05-31 23:08:08 84

原创 二进制的反码和补码

反码:符号位不变,其他位取反补码:反码加1

2021-05-31 21:25:56 45

原创 spark的提交源码(一)

SparkSubmit main new SparkSubmit doSubmit ...

2020-11-24 22:07:14 86

转载 HDFS机架感知如何算距离?

两个节点到达最近的共同祖先的距离总和当副本数为三,HDFS的放置策略是把一个节点上的一个副本在本地机架,另一个在本地机架的不同节点,最后在不同机架中的不同节点上

2020-11-24 21:10:58 301

转载 冷数据,热数据,温数据,冷热分离?

热数据是需要被计算节点频繁访问的在线类数据,比如可以是半年以内的数据,用户经常会查询它们,适合放在数据库中存储,比如MySql、MongoDB和HBase。温数据是非即时的状态和行为数据,也可以简单理解为把热数据和冷数据混在一起就成了温数据。如果整体数据量不大,也可以不区分温数据和热数据。冷数据是指离线类不经常访问的数据,用于灾难恢复的备份或者因为要遵守法律规定必须保留一段时间,比如企业备份数据、业务与操作日志数据、话单与统计数据。通常会存储在性能较低、价格较便宜的文件系统里,适用于离线分析,比如机

2020-11-24 20:22:00 3864

转载 查询A、B表中,A表中存在B表不存在的数据

查询A、B表中,A表中存在B表不存在的数据1.not inselect distinct A.ID from A where A.ID not in (select ID from B)2.left joinselect A.ID from A left join B on A.ID=B.ID where B.ID is null3.子查询select * from a where (select count(1) as num from b where b.ID = a.

2020-11-24 20:11:21 804

原创 spark 精确一次消费(Exactly-once)kafka数据

spark 精确一次消费(Exactly-once)kafka数据精确一次消费(Exactly-once) 是指消息一定会被处理且只会被处理一次。不多不少就一次处理。同时解决了数据丢失和数据重复的问题解决思路:手动维护偏移量offset(不丢失)+幂等处理(不重复)实现步骤:1.设置kafka偏移量提交为手动提交"enable.auto.commit" -> (false: java.lang.Boolean)2.将offset存入redis的hash结构中 //从Re

2020-11-24 19:36:36 965

原创 redis 基本类型

key都是字符串value常用数据类型1. string 字符串以二进制方式存储,不需要担心乱码导致的数据变化,可以存任何数据,如图片,序列化的对象,一个字符串最大容量512M SET key value 添加键值对 GET key 查询指定key的值 APPEND key value 将给定的value追加到原值的末尾 STRLEN key ...

2020-11-24 16:08:32 116

原创 idea 中scala代码显示自动推断的返回值类型

打开File-setting-Edit-General-Appearance,勾选上图中框住的选项效果如下:

2020-10-24 20:40:34 793

deepin有线网络不稳定,更新网卡即可

查看网卡驱动是否和我一样 $ lspci | grep -i ethernet 04:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12) 卸载8169驱动 $ sudo rmmod r8169 安装官方8168驱动 unzip r8168-8.047.05.zip cd r8168-8.047.05/ sudo ./autorun.sh

2023-11-28

maven仓库清理脚本

maven依赖在网络环境不好时,经常下载失败,手动删除费时费力,还不一定能找全,通过这个脚本可以一键清理下载失败的依赖,快捷好用

2020-10-18

大数据Kafka入门--理论+实践

本详细介绍了Kafka基础理论和实践的相关代码,实践步骤,为零基础的想入门大数据行业的人提供了学习相关资料

2019-05-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除