- 博客(268)
- 收藏
- 关注
原创 简单的数据平台笔记
主要解决的问题就是:指标口径不一致(业务口径or数据源不统一)、数据复用度低以及数据出口分散,不能统一管理。指标中台首先要对指标进行统一的管理,可以进行分类、检索等功能。对同一命名的不同定义的指标进行区分等。数据发布流程的规范对减少线上事故有很重要的意义,例如 数据空跑、数据修改后ddl造成执行失败等。SQL的智能检测不仅能够做到数据规范,而且能提高任务的执行效率。1、一次定义 多次复用。
2023-06-07 10:34:32
3
原创 Hive 巡检工具-对表数据量、主键重复数量以及每个字段标签的空值检测
思考,如果我们表经常增加字段,那么每次都要往表里手动维护规则进去会很麻烦,所以我们编写自增规则的一个脚本。(1)规则code用来保证该条规则的唯一性,可以和t-2分区进行关联,从而计算波动率等。2、准备一个表,存储需要自增字段的来源表的元数据信息,可以获取到该表里的字段即可。1、准备一个表,里边存储已经不需要监控的字段or已经失效的字段。(2)规则类型用来区分是表or字段 的检测规则。2、利用pyspark分别对各个规则进行检测。1、读取上边我们在表里的规则配置信息。3、讲结果写入数据表。
2023-06-06 14:03:33
47
原创 Hive 两张表数据验证方案、两张大表如何进行数据验证以及剔除部分字段进行数据验证
Hive 两张表数据验证方案、两张大表如何进行数据验证以及剔除部分字段进行数据验证
2022-10-12 17:26:08
1798
原创 Hive with项目实战:计算标签覆盖率
今天做项目,要计算用户的标签覆盖率,就是实现这样一个表格:根据用户的最近访问时间,计算这些用户含有某个标签属性的占比。其实做起来不难,但是如何实现需要设计一个思路。Sql思路:1、先根据日期筛选用户2、计算每个标签不为空的数量/该日期内的用户总数其实sql做起来很简单,但是我们进行简单的优化1、将该日期内的用户总数通过with加载到内存2、通过脚本对各个日期维度进行计算,避免写重复sql,最后再对表进行合并代码:1、根据日期筛选用户DROP TABLE IF
2022-04-25 11:17:51
301
原创 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
245
原创 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
964
原创 脚本刷新impala表
很多服务都是通过impala来读取hive表数据。我们每次更新完hive表,可以通过脚本刷新。在脚本中添加:impala-shell -k -q "refresh t_risk.flow_anomaly_monitoring_v2";-k:认证-q:后边跟要执行的sql即可。...
2022-04-12 10:56:59
1125
原创 记录简单的服务自动化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
813
原创 利用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
1350
原创 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
3001
原创 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
1107
原创 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
83
原创 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
2260
原创 hive org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator.joinOneGroup 报错
今天hive任务报错,查看tez后台failed报错原因是然后关闭优化器再次尝试set hive.cbo.enable=false;运行成功。
2022-02-10 18:01:16
801
原创 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
2122
原创 hive分区表添加字段
结尾加上CASCADE好像就不需要刷新历史分区元数据了?ALTER TABLE Database.TableName ADD COLUMNS(col1 STRING COMMENT '备注1') CASCADE;
2022-01-19 17:51:01
2684
原创 hive 正则判断字符串是否包含字母
select * from goods_member_stat_v1 where dt='20220118' and sku_id regexp '.*[A-Za-z].*';
2022-01-19 17:18:24
4024
原创 hive 利用-touchz保证任务完成,给予完成标记
我们每天跑完hive任务之后,怎样能判断是否任务完成呢。我目前公司的做法是,完成脚本任务后 touchz一个文件进去,后续检测是否完成直接检测文件是否存在即可。原理是:hive底层还是存储到hdfs上,相当于等任务完成之后给上一个标记,只检测目录存在还是存在风险。hadoopfs-touchz/team/dt=20220116/_SUCCESS...
2022-01-17 18:52:42
259
原创 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
762
原创 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
2406
原创 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
972
原创 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
2164
原创 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
2944
原创 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
1616
原创 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
1310
原创 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
3686
原创 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
598
原创 Linux 给某个用户赋予某个命令的执行权限
首先要有admin或者root的权限,这里以spark命令为例在admin 或者 root下:然后最后切换用户source /etc/profile
2021-11-02 15:47:23
1977
原创 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
259
原创 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
504
原创 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
2228
原创 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
2639
原创 java Flink(三十九)官方基础篇-算子概括(基础)
今天回顾一下Flink官方对内部提供的算子的一个介绍。算子:Map 转换流:DataStream → DataStream 简单说明:取一个元素并产生一个元素。将输入流的值加倍的映射函数(必须产生数据) 使用方式:DataStream<Integer> dataStream = //...dataStream.map(new MapFunction<Integer, Integer>() { @Override public I...
2021-07-23 16:51:20
343
1
原创 java Flink(三十八)用户自定义Functions-累加器
自定义Functions官方介绍就是除了我们自定义实现Flink提供的各种算子外,还提供了累加器等。 实现比较简单,就是简单的上下文注册以及使用。 代码: import org.apache.flink.api.common.accumulators.IntCounter;import org.apache.flink.api.common.functions.RichFlatMapFunction;import org.apache.flink.configuratio...
2021-07-23 16:12:31
218
原创 java Flink(三十七)Flink底层ProcessFunction的常见ProcessFunction总结以及简单使用
在flink中,转换算子是无法访问事件的时间戳信息和水位线信息的。所以! flink提供了一些列的Low-Level转换算法,他们可以访问时间戳,watermark以及注册定时器。总结:ProcessFunction可以被认为是一种提供了对状态和定时器访问的FlatMapFunction,没接收到一个数据流都会进行处理,可以通过访问时间戳来进行设置定时器等操作。 flink提供了8个ProcessFunction: ProcessFunction dataStrea...
2021-07-23 14:20:17
769
1
原创 java Flink(三十六)Flink多流合并算子UNION、CONNECT、CoGroup、Join
UNION介绍 DataStream.union()方法将两条或者多条DataStream合并成一条具有与输入流相同类型的输出DataStream.事件合流的方式为FIFO方式。操作符并不会产生一个特定顺序的事件流。union操作符也不会进行去重。每一个输入事件都被发送到了下一个操作符。说明:1.union 合并的流的元素必须是相同的2.union 可以合并多条流3.union不去重,合流顺序为先进先出具体用法:DataStream<Sensor...
2021-07-22 13:59:07
3632
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人