自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(272)
  • 收藏
  • 关注

原创 java Flink(四十三)Flink Interval Join源码解析以及简单实例

之前我们在一片文章里简单介绍过Flink的多流合并算子今天我们通过Flink 1.14的源码对Flink的进行深入的理解。不是两个窗口做关联,更适用于处理乱序数据流之间的关联。它的作用更类似于从左流中a元素本身出发,对右流中一段时间内的数据进行关联(Inner Join:只关联相同Key的数据)。如图所示:下边这条流中的2关联到上范围内的0/1​。

2024-03-19 15:54:25 824

原创 java Flink(四十二)Flink的序列化以及TypeInformation介绍(源码分析)

主要作用是为了在 Flink系统内有效地对数据结构类型进行管理,能够在分布式计算过程中对数据的类型进行管理和推断。同时基于对数据的类型信息管理,Flink内部对数据存储也进行了相应的性能优化。每一个具体的数据类型都对应一个TypeInformation的具体实现,每一个TypeInformation都会为对应的具体数据类型提供一个专属的序列化器。

2024-03-18 19:51:25 996

原创 pyspark(一) DataFrame结合jupyter入门

DataFrame是一个二维表结构,包括行、列以及schema(元数据)在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式数据集,是一种特殊的RDD,是一个分布式的表,类似于传统数据库中的二维表格。DataFrame 与 RDD 的主要区别在于,前者带有 schema 元信息,即 DataFrame 所表示的二维表数据集的每一列都带有名称和类型。PySpark DataFrames是延迟求值的。它们是在RDD之上实现的。

2024-03-01 19:48:33 513

原创 java Flink(四十一)Flink+avro+广播流broadcast实现流量的清洗

Data。

2024-02-29 20:40:29 578

原创 简单的数据平台笔记

主要解决的问题就是:指标口径不一致(业务口径or数据源不统一)、数据复用度低以及数据出口分散,不能统一管理。指标中台首先要对指标进行统一的管理,可以进行分类、检索等功能。对同一命名的不同定义的指标进行区分等。数据发布流程的规范对减少线上事故有很重要的意义,例如 数据空跑、数据修改后ddl造成执行失败等。SQL的智能检测不仅能够做到数据规范,而且能提高任务的执行效率。1、一次定义 多次复用。

2023-06-07 10:34:32 295

原创 pyspak(二)Hive 巡检工具-对表数据量、主键重复数量以及每个字段标签的空值检测

思考,如果我们表经常增加字段,那么每次都要往表里手动维护规则进去会很麻烦,所以我们编写自增规则的一个脚本。(1)规则code用来保证该条规则的唯一性,可以和t-2分区进行关联,从而计算波动率等。2、准备一个表,存储需要自增字段的来源表的元数据信息,可以获取到该表里的字段即可。1、准备一个表,里边存储已经不需要监控的字段or已经失效的字段。(2)规则类型用来区分是表or字段 的检测规则。2、利用pyspark分别对各个规则进行检测。1、读取上边我们在表里的规则配置信息。3、讲结果写入数据表。

2023-06-06 14:03:33 1091

原创 Linked List

链表相关算法题

2023-03-29 16:51:02 558 1

原创 Hive 两张表数据验证方案、两张大表如何进行数据验证以及剔除部分字段进行数据验证

Hive 两张表数据验证方案、两张大表如何进行数据验证以及剔除部分字段进行数据验证

2022-10-12 17:26:08 2611

原创 Hive 数据模型切换后的数据验证方案

Hive 数据模型切换后的数据验证方案

2022-09-15 11:23:09 1756

原创 Hive 根据生日计算年龄

Hive 根据生日计算年龄

2022-07-13 14:43:22 2199

原创 Hive with项目实战:计算标签覆盖率

今天做项目,要计算用户的标签覆盖率,就是实现这样一个表格:根据用户的最近访问时间,计算这些用户含有某个标签属性的占比。其实做起来不难,但是如何实现需要设计一个思路。Sql思路:1、先根据日期筛选用户2、计算每个标签不为空的数量/该日期内的用户总数其实sql做起来很简单,但是我们进行简单的优化1、将该日期内的用户总数通过with加载到内存2、通过脚本对各个日期维度进行计算,避免写重复sql,最后再对表进行合并代码:1、根据日期筛选用户DROP TABLE IF

2022-04-25 11:17:51 512

原创 Scala 配合Java查询mysql

之前的Java查询Mysql的工具类地址:Java 获取mysql连接工具类_小菜菜1223的博客-CSDN博客scala配合工具类进行mysql查询代码:package utilsobject SelectUtils { def selectConf(sql: String): String = { var conf: String = "" val conn = JdbcUtils.getConnection val pst = conn.prepareS

2022-04-21 15:10:10 330

原创 Java 获取mysql连接工具类

Spark还是平时经常会使用到mysql去读取一些配置信息,所以整理一个工具类获取或者关闭mysql的连接。1、首先编写配置文件db.properties:url=jdbc:mysql://10.driver=com.mysql.jdbc.Driverusername=rootpassword=1234562、编写工具类:package utils;import java.io.InputStream;import java.sql.*;import java.ut

2022-04-14 15:14:16 1141

原创 脚本刷新impala表

很多服务都是通过impala来读取hive表数据。我们每次更新完hive表,可以通过脚本刷新。在脚本中添加:impala-shell -k -q "refresh t_risk.flow_anomaly_monitoring_v2";-k:认证-q:后边跟要执行的sql即可。...

2022-04-12 10:56:59 1207

原创 记录简单的服务自动化shell脚本

为了能够方便的启动、重启、停止或者查询服务状态,需要写脚本来控制。(未完成版本)首先是配置文件,类似于代码的config,只需要修改这里边的参数再去运行脚本即可实现自动化config.sh#项目名称export PARAM="say"#运行代码的名称export EXEC_FILE="say.py"#代码、日志存放目录export DIR=`pwd`#代码类型export PRO_TYPE="python"#后台运行export JOB_TYPE="background"

2022-04-08 14:42:10 865

原创 利用sed命令筛选日志中的ip

来看一下日志内容我们想通过sed命令将文本中的ip摘出来思路:1、先选出有ip地址的行cat ip.txt | grep 'inet addr'结果:inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.02、摘出ip先删除inet addr:cat a.txt | grep 'inet addr' | sed 's/^.*addr://g'这里sed后边s/ 代表着从这行的开头^.*addr

2022-03-28 17:21:33 1730

原创 hdfs 批量删除某日期文件

今天在写表的时候发现没有把历史数据删除,所以要删除非本日日期的文件。1、首先将非本日日期的文件输出到txthdfs dfs -ls hdfs://warehouse/profile/ | grep -v 2022-03-09 >./2.txt2、利用awk编写删除脚本cat 2.txt | awk -F " " '{print "hadoop fs -rm -r " $8}' > ./1.sh3、运行脚本/bin/bash 1.sh...

2022-03-09 10:17:08 3650

原创 hive join时主表空值过多产生数据倾斜问题

在各个表做关联的时候,如果主表过大且某个值过多再去join其他表很容易产生数据倾斜问题我们的思路就是要将数据均匀的分配到每个任务上这里我们以空值为例,使用rand(1)即可均匀分配数据select * from(select *,case when department in ('-999','') then rand(1) else department end as department2 from profile_v2.detail_member_user_info_base)

2022-02-22 15:33:45 1312

原创 python脚本补充两个日期之间的hive数据

#coding:utf-8import osimport datetime#获取之后日期def get_day(st,dt,format="%Y%m%d"): day = st + datetime.timedelta(days=dt) return day.strftime(format)#日期格式转换def format_date(t): return datetime.date(int(t[0:4]),int(t[4:6]),int(t[6:]))#执行.

2022-02-22 14:16:20 149

原创 hive 计算两个经纬度之间的距离

select 6378137*2*ASIN(SQRT(POWER(SIN((lat1-lat2)*ACOS(-1)/360),2) + COS(lat1*ACOS(-1)/180)*COS(lat2*ACOS(-1)/180)*POWER(SIN((lng1-lng2)*ACOS(-1)/360),2)));lat1,lng1是第一个点的经纬度lat2,lng2是第二个点的经纬度python和java版本代码:python 计算两个经纬度之间的距离_小菜菜1223的博客-CSDN博客.

2022-02-14 10:21:00 3067

原创 hive org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator.joinOneGroup 报错

今天hive任务报错,查看tez后台failed报错原因是然后关闭优化器再次尝试set hive.cbo.enable=false;运行成功。

2022-02-10 18:01:16 896

原创 hive 分区表新增字段 刷新字段值

hive当天分区新增了字段,查询发现全是null1、删除分区ALTER TABLE test DROP PARTITION (dt='20220125');2、查看分区路径desc formatted ods.test partition(dt='20220124');3、重建分区ALTER TABLE ods.test add PARTITION (dt='20220125') location 'hdfs:///20220125';完毕。...

2022-01-25 17:15:56 2442

原创 hive分区表添加字段

结尾加上CASCADE好像就不需要刷新历史分区元数据了?ALTER TABLE Database.TableName ADD COLUMNS(col1 STRING COMMENT '备注1') CASCADE;

2022-01-19 17:51:01 2794

原创 hive 正则判断字符串是否包含字母

select * from goods_member_stat_v1 where dt='20220118' and sku_id regexp '.*[A-Za-z].*';

2022-01-19 17:18:24 4932

原创 hive 利用-touchz保证任务完成,给予完成标记

我们每天跑完hive任务之后,怎样能判断是否任务完成呢。我目前公司的做法是,完成脚本任务后 touchz一个文件进去,后续检测是否完成直接检测文件是否存在即可。原理是:hive底层还是存储到hdfs上,相当于等任务完成之后给上一个标记,只检测目录存在还是存在风险。hadoopfs-touchz/team/dt=20220116/_SUCCESS...

2022-01-17 18:52:42 326

原创 Python检测hive依赖表是否生成

提要:1、每天利用python执行hive sql脚本2、执行前检测依赖表是否生成3、依赖表如果生成成功会touch一个success文件到hdfs目录4、循环检测一定次数,失败抛出异常上代码:#coding:utf-8#@auth: lgyimport datetimeimport subprocessimport timeimport sys#获取昨天日期def get_yesterday(format="%Y%m%d"): today = datet

2022-01-17 15:45:56 892

原创 hive、impala 求中位数

hive求中位数:(0.5参数可调)select percentile(cast(p as int),0.5) from student2;impala求中位数:select APPX_MEDIAN(error_uv_all) from xxx;

2022-01-05 17:36:22 3295

原创 hive spark引擎推送数据到es(elasticsearch)

hive 写入数据到es

2021-12-29 17:18:33 1604

原创 shell hive补数,补充两个日期之间的数据

# 初始日期d=`date -d "20210901" "+%Y%m%d"`# 循环判断不等于结尾日期while [ $d -ne "20211201" ]do echo hive --hivevar today=$d -f /home/risk/guangyi/cmpid_group.sql hive --hivevar today=$d -f /home/risk/guangyi/cmpid_group.sql echo hive --hivevar today=$d.

2021-12-22 16:16:12 1170

原创 git 忽略部分文件不提交

我们在提交代码到git的时候,很多日志文件、target文件夹或者idea的文件不想提交更改。1、创建 .gitignore 文件vim .gitignore2、放入屏蔽规则忽略文件夹 /logs忽略文件 *.log# Created by .ignore support plugin (hsz.mobi).idea/**.imlconf/### Java template# Compiled class file*.class# Log file*.log.

2021-12-21 11:03:59 2633

原创 Hive load hdfs文件生成hive表

1、上传文件到hdfshdfs dfs -put ./user_id.csv /team/profile/test;2、创建表(进入hive客户端)create table tmp.profile_need_match_view_users(id string) row format delimited fields terminated by '\t';3、load到hive表load data inpath '/team/profile/test/user_id.csv' into

2021-12-17 14:37:39 3408

原创 Java 读写文件工具类

今天简单写了一下读写文件用的工具类,方便后面开发或者测试时直接使用。import lombok.Cleanup;import java.io.*;import java.util.ArrayList;import java.util.List;public class FileUtils { //逐行读取文件内容返回内容列表 public static List<String> readLine(String path){ List<Str

2021-12-14 15:14:14 1814

原创 Scala 连接Redis工具类

Scala使用工厂模式返回操作Redis集群的工具类package come.gome.data.utilsimport redis.clients.jedis.{HostAndPort, JedisCluster, JedisPool, JedisPoolConfig}import scala.collection.JavaConverters.setAsJavaSetConverter/** * @author lgy * @note redis工具类 */object Jed

2021-12-09 20:10:53 1570

原创 Hive 复制表结构、表数据以及数据库迁移

1、复制表或者迁移数据库CREATE TABLE new_table AS SELECT * FROM old_table;2、复制数据查看老表的hdfs文件位置 (show create table xxx;) old_file_path查看新表的hdfs文件位置 new_file_path;hdfs复制:hadoop fs -cpold_file_pathnew_file_path;3、修复元数据MSCK REPAIR TABLE new_table;修复新表的分区元数据..

2021-11-24 11:13:12 4202

原创 python2 连接hdfs 解决kerberos认证

首先安装包:pip2 install hdfspip2 install requests_kerberos然后代码认证from hdfs.ext.kerberos import KerberosClientclient = KerberosClient('http://xx.xx.xx.xx:50070', hostname_override="bj-gc3-arch-hadoop-namenode-01") client.list('/user')...

2021-11-04 16:39:31 822

原创 Linux 给某个用户赋予某个命令的执行权限

首先要有admin或者root的权限,这里以spark命令为例在admin 或者 root下:然后最后切换用户source /etc/profile

2021-11-02 15:47:23 2370

原创 shell 导出impala查询结果

利用impala去查询kudu表,需要导出成csv文件。impala-shell -k -q "select '$name' as dic_code, ${col1}, ${col2}, row_number() over(order by ${col1}) rank from kudu_dim2.dim_shop_info group by ${col1}, ${col2} " -B --output_delimiter="," --print_header -o ${name}.cs

2021-10-27 14:42:57 328

原创 shell 脚本导出hive查询结果为csv文件

今天遇到需求,导出hive维表查询结果到csv文件。cat_id1="off_cat_id1,off_cat_name1,c1id"cat_id2="off_cat_id2,off_cat_name2,c2id"cat_id3="off_cat_id3,off_cat_name3,c3id"cat_id4="off_cat_id4,off_cat_name4,c4id"off_brand_id="off_brand_id,off_brand_name,brand_id"array=($c

2021-10-27 14:36:43 699

原创 python 接受ctrl c结束子进程,subprocess.Popen杀死子进程

场景:Python 脚本开启子进程执行,例如执行hive等等,通过接受ctrl c 能够将子进程一起杀死。代码:#coding:utf-8import datetimeimport timeimport subprocessimport signalimport oscmd = ['ping', 'www.baidu.com']#开启子进程 preexec_fn设置为进程组p = subprocess.Popen(cmd, preexec_fn=os.setsid)#接

2021-09-28 11:09:44 3262

原创 java Flink(四十)FlinkSql 简单Demo以及具体使用

之前FlinkSql用的比较少,今天开始简单介绍一下。首先导入依赖:<!-- 引入flink table相关依赖--><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_2.12</artifactId> <version>1.10.1</version>

2021-07-29 10:53:16 4051

空空如也

空空如也

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

TA关注的人

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