自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (1)
  • 收藏
  • 关注

原创 最大连续登录天数统计对应的用户数分布的三种实现方式(HQL+Spark Rdd)

需求:一个用户从第一次购买该剧开始,每天都购买或者未购买天数不超过1天,均视为连续追剧。未购买天数超过1天的均视为中断,需要重新统计连续追剧日期。请统计购买该剧超前点播的用户,最大的连续追剧天数,并按照最大连续追剧天数统计对应的用户数分布。举例:实现方式一:开窗取上一条记录的view_dt 做差,小于等于2 的为有效连续天数。大于2的中断,重新计算连续思想将同一个用户中多个连续时间段分开,使用sum(dateDiff > 2, 1, 0))开窗可实现为每个连续时间段标记的效果。sum(if

2020-11-25 19:29:04 913 1

原创 使用SparkSQL 和 Hive API 代码实现用户自定义函数UDF UDAF UDTF

UDAF例:SparkSQL 中继承Aggregator自定义UDAF函数:输入多行,返回一行 => 聚合函数 。 (Scala代码实现)import org.apache.spark.SparkConfimport org.apache.spark.sql.expressions.Aggregatorimport org.apache.spark.sql.{DataFrame, Encoder, Encoders, SparkSession, functions}//输入多行,返回

2020-11-01 17:05:28 1241

原创 SparkCore项目之用户行为数据分析经验总结

数据格式样例类//用户访问动作表case class UserVisitAction(date: String,//用户点击行为的日期 user_id: Long,//用户的ID session_id: String,//Session的ID page_id: Long,//某个页面的ID

2020-09-28 21:17:05 586

原创 Scala语言实现WordCount案例以及几个高级函数的使用总结

Scala语言实现WordCount案例以及几个高级函数的使用总结实现案例前需要熟悉scala中集合的几个高级函数:映射:**集合.map() ** 即拿到集合中元素做某些处理,返回当前集合的类型。扁平化:**集合.flatten() **就是提取外层集合中的内层集合中的元素,打散放入到外层集合中。映射和扁平化可以写成一个函数:集合.flatMap()。分组:**集合.groupBy()**函数:根据集合中元素的某个特征进行分组,返回值类型:Map(any -> List[any])排序

2020-09-20 17:25:16 692

原创 HQL:统计影音视频网站的常规指标,各种TopN指标

统计影音视频网站的常规指标,各种TopN指标:– 统计视频观看数Top10– 统计视频类别热度Top10(类别热度:类别下的总视频数)– 统计出视频观看数最高的20个视频的所属类别以及类别包含Top20视频的个数– 统计视频观看数Top50所关联视频的所属类别Rank– 统计每个类别中的视频热度Top10,以Music为例(视频热度:视频观看数)– 统计每个类别视频观看数Top10– 统计上传视频最多的用户Top10以及他们上传的视频观看次数在前20的视频需要准备的表创建外部数据表:m

2020-08-23 12:58:49 1387

原创 阿里面试题—蚂蚁森林HQL

---------------------需求------------------1.蚂蚁森林植物申领统计问题:假设2017年1月1日开始记录低碳数据(user_low_carbon),假设2017年10月1日之前满足申领条件的用户都申领了一颗p004-胡杨,剩余的能量全部用来领取“p002-沙柳” 。统计在10月1日累计申领“p002-沙柳” 排名前10的用户信息;以及他比后一名多领了几颗沙柳。得到的统计结果如下表样式:user_id plant_count less_count(比后一名多

2020-08-23 12:56:59 795

原创 HQL中常用的函数总结

常用日期函数unix_timestamp:返回当前或指定时间的时间戳 select unix_timestamp(); select unix_timestamp('2008-08-08 08:08:08'); from_unixtime:将时间戳转为日期格式 select from_unixtime(1218182888);current_date:当前日期 select current_date();curren

2020-08-19 18:59:02 1173

原创 MapReduce程序案例 MapJoin与ReduceJoin

MapJoin案例应用1)使用场景Map Join适用于一张表十分小、一张表很大的场景。2)优点思考:在Reduce端处理过多的表,非常容易产生数据倾斜。怎么办?在Map端缓存多张表,提前处理业务逻辑,这样增加Map端业务,减少Reduce端数据的压力,尽可能的减少数据倾斜。3)具体办法:采用DistributedCache​ (1)在Mapper的setup阶段,将文件读取到缓存集合中。​ (2)在Driver驱动类中加载缓存。//缓存普通文件到Task运行节点。job.addCac

2020-08-12 21:00:48 156

原创 MapTask,ReduceTask工作机制(包括shuffle阶段),OutCollector中Partitioner源码分析

MapReduce大致流程:inputformat -> Mapper -> Shuffle(各种排序,分区排序,归并排序) -> Reducer -> outputformatshuffle过程位于Mapper阶段之前,Reducer阶段之后。MapTask的工作机制(包括shuffle过程,包括ReduceTask):​ 【MapTask通过InputFormat获得的RecordReader,输出keyValue,再交给mapper中用户定义的Map()方法中处理,当

2020-08-12 10:57:20 327

原创 flink状态和检查点

如果遇到sum这种,会接收上游多个分区的分界线数据,会进行分界线对齐(详细来讲:Sum算子接收两个不同的子任务的数据,收到了第一子任务的分界线数据,但是没收到第二个子任务的分界线数据,这时候如果第二个子任务传来正常的数据需要正常处理的,但是如果是第一个分界线已经到达的子任务再来数据,就需要等待写入缓存,只有第二子任务的分界线数据到达,然后状态保存,再做处理。适用于状态大,窗口长的情况下,因为会序列化和反序列化,访问状态的性能会差点。精准一次性保证,就是不会重复消费数据,也不会丢失数据。

2023-11-07 17:04:28 621

原创 关于SparkRdd和SparkSql的几个指标统计,scala语言,打包上传到spark集群,yarn模式运行

点击history,跳转到[spark 历史服务器(在hadoop102上启动sbin/start-history-server.sh)]http://hadoop102:4000。使用maven install 打jar 包,放到spark 集群上。启动大数据各集群组件,执行 run_spark_job_byJar.sh。查看http://hadoop104:8088/cluster yarn历史服务器。查看 spark 作业日志。

2023-10-17 10:36:53 773

原创 flink sql 如何upsert 到一张hologres表中

Flink Table Sink 的三种模式本质上是如何监控结果表并产生 changelog,这可以应用于所有需要将表转为流的场景,包括同一个 Flink 应用的不同表间的联动。三种模式中 Append 模式只支持表的INSERT,最为简单;Upsert 模式依赖业务主键提供INSERTUPDATE和DELETE全部三类变更,比较实用;Retract 模式同样支持三类变更且不要求业务主键,但会将UPDATE翻译为旧数据的撤回和新数据的累加,实现上比较复杂。

2023-03-22 10:01:17 1151 1

原创 使用 Hive partitioned by range values less then方式, 根据日期创建一张以月份为分区的hive表

使用 Hive partitioned by range values less then方式, 根据日期创建一张以月份为分区的hive表,其中分区字段为。关键字来指定分区方式,每个分区代表一个月。最后,在插入数据时,我们使用。在上面的示例中,我们首先创建了一个名为。字段中获取年月,并指定到分区字段。子句中指定了一个分区字段。

2023-03-16 10:07:49 752

原创 hive 分桶文件的大小多大最合适

另一方面,如果某个列包含许多唯一值,例如包含顾客 ID 的列,这可能不是一个好的分桶字段,因为这可能会导致分桶数量过多,从而降低查询效率。在 Hive 中,选择分桶字段时,考虑到分桶字段的值将被用于对数据进行分区,因此选择较少离散值的列作为分桶字段可以提高查询效率。同时,指定适当的分桶数也很重要,应该进行实验和测试以找到最佳的分桶数,以获得最佳的查询性能。在 Hive 中,修改分桶字段比较困难,因为分桶字段决定了表的数据分布方式,如果修改分桶字段可能会导致数据重新分布,进而影响查询性能。

2023-03-08 17:07:18 1901

原创 db2 导出del文件,java代码转换字段分割符做数据清洗,上传hdfs ,完成del文件导入到hive

在DB2数据库中,在导出DEL文件时,默认的字符分隔符是"、字段分隔符是, (逗号)。在hive中字段分割符是以‘001’,特殊空白字符分割。如果将del导入db2,再用sqoop抽的话,就不用考虑文件中的分隔符问题。上传完后,在hive表发现错列了,原因是db2字字符串类型的字段值会存在(逗号),并且值会有双引号。这里写了一个java程序,对del文件做处理,将字段分隔符转化成‘\001’,并去除双引号。最后在idea里打包,上传到服务器,执行java -jar XXXX。对del文件进行清洗转化。

2023-01-11 15:05:12 1228

原创 电脑键盘上一些不常用的键介绍:F1 - F12,sysrq键,Scroll Lock键,pausebreak键

其实它在Windows中没有任何作用,它在DOS窗口中才会显示出作用,它会显示最近使用过的一些DOS命令,若你在命令行下输入一些命令,系统会帮你自动记录,需再次输入相同命令时,直接按上下箭头就可以调出相应的命令。可快速调出启动设置菜单,快速选择软盘启动,或是光盘启动,或是直接用硬盘启动,进入BIOS进行启动顺序的修改。在EXCEL中,在Scroll Lock关闭的状态下,使用翻页键(如Page Up和Page Down)时,单元格选定区域会随之发生移动。F12:按下F12,在Windows中同样没有作用。

2022-11-04 11:18:43 1955

原创 scp(secure copy)安全拷贝和rsync远程同步的区别

(4)在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。​ 把hadoop102机器上的/opt/software目录同步到hadoop103服务器的/opt/software目录下。(from server1 to server2)命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称。

2022-11-03 16:55:51 525

原创 Java删除文件夹下所有文件的方法

您可以使用该FileUtils.cleanDirectory()方法递归删除目录中的所有文件和子目录,而不删除目录本身。请注意,File.delete()当且仅当目录为空时,您可以使用该方法删除目录。它利用该Files.walk()方法并删除目录中的所有文件和子目录以及目录本身。要递归删除目录及其中的所有内容,您可以使用该FileUtils.deleteDirectory()方法。或者,您可以使用该FileUtils.forceDelete()方法删除一个目录和所有子目录。

2022-10-18 10:04:02 15425 2

原创 抽取sql文件中的源表【from,join的表】

【代码】抽取sql文件中的源表【from,join的表】

2022-09-27 15:05:21 280

原创 maxwell工作原理

二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。MySQL的二进制日志可以说MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗。很简单,就是把自己伪装成slave,假装从master复制数据。...

2022-08-29 16:45:34 320

原创 ER模型与维度模型

例如:用户从下单到确认收货的平均时间间隔。该表粒度=采样周期:每天+维度:1,项目类型,2,审批类型,3,科室,4,项目,5, 子项目。2,维度:业务过程所发生的环境(日期、地区、人物身份/特征、产品等) n。确定度量值(由统计指标决定,例如:审批时效p85,总投入资源数)1,事实:通常对应业务过程(下单、付款、退单等) V。对应不同维度:日期、地区、人物身份/特征、产品。确定粒度:可由采样周期和维度描述。例如指标:主办业务/技术审批时效。注:相当于 T +1每日汇总层。2NE:不存在部分函数依赖。....

2022-08-29 11:06:51 770

原创 数据库报表:统计当前指标值比上月,比上季度,比年初,比去年同期增幅(同比)指标值,sql逻辑

数据库报表:统计当月指标值比上月,比上季度,比去年底,比去年同期增幅(同比,即上年同期上月底数据)指标值,sql逻辑数据表结构:RECORD_DT(日期)、BANK_NO (机构号)、ITEM_TP(统计类型)、CURR_CD(币种)、KPI(指标值)数据样例最后统计成的结果,每行结构为:RECORD_DT(日期)、BANK_NO (机构号)、ITEM_TP(统计类型)、CURR_CD(币种)、KPI(指标值)、LST_MTH_KPI、LST_QTR_KPI、YR_BEGIN_KPI、T_KPI综上所述,

2022-06-30 11:18:12 726

原创 Spark提交任务运行报错:Unregistering ApplicationMaster...Promise already completed.

2022-05-23 14:33:05,581 INFO yarn.ApplicationMaster: Unregistering ApplicationMaster with FAILED (diag message: User class threw exception: java.lang.IllegalStateException: Promise already completed. at scala.concurrent.Promise.complete(Promise.scala:53).

2022-05-23 15:11:35 1158

原创 scala入门知识点

变量与常量变量:var i:Int = 10常量:val j:Int = 20说明:类型可以省略,类型确定后,就不能修改,变量声明时,必须要有初始值字符串、变量一起使用val s2 = s"name=$name"var age: Int = 18//格式化输出printf("info=%s age=%d\n", s2, age)//如果需要对变量进行运算,那么可以加${}val s1 =s"""|select| name,| age|from

2022-05-18 10:49:06 353

原创 大数据集群搭建概述

yarn历史服务器,查看mapreduce、spark任务、hive on spark任务hadoop103:8088/cluster点击yarn历史服务器的一个任务后的history 会调到spark 具体的执行日志。(自定义端口为4000)http://hadoop102:4000/hdfs对应位置为:hdfs://yang-HA/sparkLog_dirhive on spark 任务 执行失败后查看详细日志默认路径在:/tmp/atguigu/hive.log集群高可用..

2022-05-17 16:08:28 572

原创 java 调用python脚本 并将文件上传到linux环境

2022-04-14 16:11:55 486 1

原创 给定一个子串,统计字符串中该子串出现的次数 java

public static void main(String[] args) { subStrAppearCnt("a","acda"); } public static void subStrAppearCnt(String subStr,String originStr){ int spoon=subStr.length(),size=originStr.length(); String x= ""; int cnt=0;.

2022-04-13 08:35:33 996

原创 大数据hive集群之间数据迁移

数据迁移总体大概流程为了数据的安全性。在源集群上创建中间表、在目标集群创建中间表以及目标表。这里中间表不用考虑分区表,用普通orc表即可。更改目标集群hdfs目录的权限,方便读写。将目标集群中的中间表清空。在目标集群上namnode为active 的节点上,使用关键命令hadoop distcp 、进行集群之间数据拷贝。拷贝到中间表。两边节点的namenode 都应该是active。目标环境下,针对目标表是否为分区表,判断是否使用动态分区将中间表数据写入目标表。及时清理中间临时表,比对 源、

2022-04-07 13:54:51 3182

原创 hive数据导出成csv文件shell脚本

#!/bin/bash tab_nm=$1etldt=`date -d $2 + "%Y%m%d"`dt=`date -d $2 + "%Y-%m-%d"`echo "${tab_nm}_${dt}"#数据存放目录data_hdfs_dir ="/tmp/idap/export_data/${tab_nm}"#数据导出路経local_path ="/gpfsetl/jcp_dw/script/idap/test/${tab_nm}_${dt}"#scp将数据传到目标服务器上scp_c.

2022-04-06 09:50:29 2433 3

原创 Excel公式:index + match多条件匹配,以当前行多个单元值去另一文档匹配,返回指定单元值

index函数解析: 在一个范围内(如下图A2:C3),根据行列坐标(如下图第一行,第一列),返回单元格的值match函数解析: 参数列表如下,第一个参数即需要查找的a值,第二个参数为某一整列(比如为X列),第三个参数为是否精准匹配(0为精准匹配)。返回在X列的第几行。举个栗子将index 和match联合在一起使用首先需要思考为啥能联合在一起使用,index是根据行列坐标去定位具体的某个单元格值。match 恰好可以提供行号,再根据我们想要取的某列,就可以查找到我们想要的那个单元格的值了。

2022-03-31 10:42:57 16409 1

原创 hive中复制(备份)一张表的两种方式

hive中复制(备份)一张表的两种方式第一种种方式虽然可以复制表字段、表数据 ,但是表属性会发生改变create table if not exists a_tableNMmas select * from b_tabNm第二种 建表语句会完全相同,再加载数据。create table if not exists a like binsert into a select * from b...

2022-03-23 10:12:59 7406

原创 Hive 不同版本中update更新操作 (merge into 有则更新,无则插入)

一、使用条件hive2.2.0及之后的版本支持使用merge into 语法,使用源表数据批量目标表的数据。使用该功能还需做如下配置1、参数配置set hive.support.concurrency = true;set hive.enforce.bucketing = true;set hive.exec.dynamic.partition.mode = nonstrict;set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.Db

2022-03-23 09:49:14 9993 2

原创 调试存储过程中的变量

dbms_output.put_line(yr_date);

2022-02-08 09:19:37 511

原创 数仓删除字段后数据回插

原表rename->create(增加字段)->insert select from renameTab->drop rename表

2021-10-18 15:36:31 250

原创 sql语句中筛选条件在on和where中的区别

sql语句中筛选条件在on和where中的区别情况一:A left join B on A. a=B. a and A.b=B.b和情况二: A left join B on A. a=B. a where A.b=B.b的区别。答: 筛选条件在on里面,是在原来的内连接的结果上再进行筛选。如果在where里面,是对left join后的结果进行筛选...

2021-06-11 09:08:05 244

原创 大数据面试演讲稿 离线数仓实时分析

自我介绍​ 面试官好!​ 我叫xxx,2019年毕业于xxx。之前在上家公司主要负责离线数仓的部分,19年3月份进去实习,实习的时候,这家公司刚刚开始做大数据方面的业务。算是从零开始;大数据平台从搭建到稳定运行,我们花了半年左右的时间;后来领导看我表现不错,让我做离线数仓的项目。当时我们是结合阿里云整个数仓的建模模型建的这个数仓,同时增加了一个dwt这样一层,写需求的时候能更容易些。后来大半年都在做这个数仓项目,一直到现在这个项目还在,后来整体的架构搭建完成后,就交给了新来的实习生,让他们来接手。

2021-01-27 17:33:06 523

原创 大数据面试题

1. Linux 常用命令命令命令解释top查看内存ps -ef | grep 程序名查看进程df -h查看磁盘存储情况iotop查看磁盘IO读写iotop -o直接查看比较高的磁盘读写程序uptime查看系统运行时长和平均负载netstat -tunlp | grep 端口号查看端口占用情况2. Shell常用工具及写过的脚本awk:文本和数据的处理工具sed:流式文本编辑器cut: 连接文件并打印在输出设备上sort

2020-12-10 18:06:48 1788

原创 JAVA常用类(String,StringBuffer,日期类)

String类/*** String : 是内容不可改变的Unicode字符序列(CharSequence).* 可以简单地理解为是一个char[]* 0 2 10 15 21 27 32 34* String string = " abcAQQY 我喜欢你,你喜欢我吗?我不喜欢你 zzz123 ";** ###public int length(). string.length() => 35

2020-11-06 11:17:58 160

原创 hive on spark : 使用load data 命令将hdfs上数据覆写到hive表中报错:could not be cleaned up解决方法

问题出现: 在执行sh脚本时,执行loaddatainpath'/origin_data/$APP/db/order_info/$do_date'OVERWRITEintotable${APP}.ods_order_infopartition(dt='$do_date');报错:Loading data to table gmall.ods_order_detail partition (dt=2020-06-23)FAILED: Execution Error, r...

2020-10-20 23:38:52 4454 4

原创 大数据技术之Flume知识点总结

第1章 Flume概述1.1 Flume定义​ Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。Flume最主要的作用是实时读取服务器本地磁盘上的数据,将数据写入HDFS上。1.2 Flume基础架构Flume组成架构如下图所示:1.2.1 Agent​ Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。​ Agent主要有3个部分组成,Source、Channel、Sink。1.2.2

2020-09-20 17:55:49 276

12道救命sql.sql

12道sql面试题,选自互联网大厂面试题,搞定这12道即可完成公司安排的工作任务

2020-08-21

空空如也

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

TA关注的人

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