自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RTKlib操作手册--使用样例数据演示

本文将使用样例数据演示如何使用RTKLIB进行rtk差分定位。

2024-01-15 22:00:00 2833

原创 两种高效计算 两个经纬度之间距离的方法--解决Haversine 公式性能慢的问题

最新开发的业务中,涉及到计算两个经纬度之间的距离。已知A点和B点的 经纬度,计算A点到B点之间的距离。最开始使用的是Haversine公式来进行计算,但上线后出现严重的性能问题,主要原因是业务数据量太大,每天PB级的数据量。因此,需要研究一个更高效便捷的计算方法,下面将介绍Haversine公式和实现代码,以及新的计算公式&代码,并对他们的性能及精度进行分析。

2024-01-04 20:30:00 2937 1

原创 nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件

nifi 是一款开源的数据集成工具,由Apache软件基金会开发和维护。它是一个易于使用、功能强大且可靠的系统,用于处理和分发数据 的大数据数据组件。本文详细介绍了nifi的历史背景、工作原理、入门介绍、工作流程及实际应用场景和使用优势,帮助读者认识并入门这款强大的开源大数据组件。

2024-01-03 20:15:00 4670 1

原创 flinkcdc 动态的增加新的同步表到同一个作业中

本文介绍了在flinkcdc 作业中,同一个作业如何实现动态新增表的功能。设想下假如你一个 CDC pipeline 监控了 4 张表,突然有天业务需求需要再加几张表,你肯定不想另起作业 (浪费资源),那么这个feature 可以让你在当前作业直接增加需要监控的表。新增表都是先做全量再优雅地切换到增量,遇到新增监控表时不用新起作业,极大地节约了资源

2023-04-20 17:45:31 12371 4

原创 如何使用 ChatGPT/open ai 接口 进行图片生成(绘画、图片创作)

本文介绍了如何使用chatgpt进行绘画,通过输入一句话,生成一张图片。

2023-04-03 18:11:39 18558 6

原创 flink sql (jdbc)如何支持where 条件下推数据库

为了支持flink sql (jdbc)过滤条件下推,这里提供一些解决方案。最近在使用 flink sql (jdbc)做离线数据同步(历史数据修复),只同步几条数据的情况下,测试环境执行竟然需要30+分钟。进一步研究,发现where条件没有下推到数据库执行,而是全表读取。本文提供了2种解决办法。

2023-03-08 11:11:52 3092

原创 flink sql 源码走读 --- 解释flink jdbc where 条件为什么没有下推数据库

本文通过一个具体案例,说明 flink sql 如何实现 connector 加载、source/sink 端操作、数据库连接等。可以帮助大家了解其原理,并在代码中找到落库执行SQL生成逻辑,得到where条件并没有下推到库执行的结论。

2023-03-07 10:18:06 2711 1

原创 flink sql 执行慢问题排查(flink jdbc where 条件没有下推数据库)

本文主要介绍了 如何利用 jstack 定位问题,并通过断点了解到flink sql (flinksql)执行慢的原因,重在排查问题的技巧和思路。最终定位到 flink sql (jdbc)执行慢的原因是 因为sql中的 where条件没有下推到数据库执行,而是全量加载数据,在内存里过滤。

2023-02-23 17:36:39 1390 8

原创 flinksql idea执行没问题,java -jar 或者 上传集群 执行报错(NoMatchingTableFactoryException) 解决办法

idea正常,上传集群报错Caused by: org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for 'org.....ExecutorFactory' in the classpath. Reason: No factory implements 'org.apache.flink.table。提供2个可行的解决办法

2023-02-15 15:08:27 574 1

原创 flink jobmanager 启动失败,报错:taskexecutor.TaskExecutor-Could not resolve ResourceManager address

解决jobmanager启动失败问题:Remote connection to [null] failed with java.net.ConnectException: Connection refused: taskmanager/xxxx:6123Could not resolve ResourceManager address akka.tcp://flink@taskmanager:6123/user/rpc/resourcemanager

2023-01-19 14:00:45 9917

原创 spark sql 中的 笛卡尔积(cross join)优化方法--mapjoin

在编写sql代码时,需要尽量少使用 笛卡尔积,但是有些特殊场景下很难找到代替方案。这里分享了 在进行spark sql 编写任务作业时遇到笛卡尔积导致执行慢的问题,并记录了解决方案

2023-01-11 20:15:00 2307 1

原创 mysql通过 表名、列名、字段名、注释 找到所在库 或者所在表

最近在开发过程中,由于涉及的库太多,有时候知道关联的列名 或者表名,找不到源库了。所以整理了下面的文章,希望对你有帮助。

2023-01-10 19:15:00 3722

原创 使用COALESCE和REPARTITION解决SPARK SQL(hadoop) 小文件过多的问题

最近在做数仓宽表开发时,发现某些表的在hadoop(命令:hdfs dfs -ls)上小文件特别多,整体数据量不大,每个分区却有几百个小文件。一个小文件需要在nameNode中维护一份元数据(目录、大小、权限等信息) ,占用的资源是 150字节(Byte),100个小文件则占用 14.6KB。本文介绍如何使用 COALESCE 和 REPARTITION 来解决这种问题

2023-01-09 20:15:00 869

原创 使用kettle同步全量数据到Elasticsearch(es)--elasticsearch-bulk-insert-plugin应用

介绍了如何基于kettle的elasticsearch-bulk-insert-plugin插件将数据导入es。如果你的es版本是7及以上 或者设置了ssl 认证,kettle自带的插件是不支持的。这里提供了解决方案及简单应用的demo

2023-01-06 19:00:00 6952 3

原创 mysql/oracle 数据库delete操作太慢(where ... in ...),不加索引,一招让性能提升百倍

delete操作应用虽然不多,但是有些场景使用起来还是更方便。所以对于一些大表,有时还是需要 硬删操作,也就是delete操作 。 delete from table_a where id in (select id from table_b); 不需要新增索引,经过sql 优化后性能提升了100倍

2023-01-03 19:30:00 8530 2

原创 mysql 批量数据插入很慢(kettle 输入输出组件) 性能优化办法

最近在做数仓重构项目,遇到一些性能瓶颈,这里记录一下解决办法。随着业务数据每天都在增加,几年前开发的etl任务开始跑不动了。大表一般是通过增量的方式插入,但是修复bug 或者每月/季度跑一次的情况 需要跑全量,原来的etl任务可能需要跑几个小时,甚至出现超时失败的情况。因此需要优化,下面介绍一些优化方法。(项目是用kettle做的,如果使用其他开发工具,也可以参考下面的思路)1、配置数据库连接参数2、去掉临时表 DDL的primary key3、调整输出组件的数量4、暂时关闭索引。

2022-12-29 11:37:08 7870 1

原创 如何将 txt、xlsx、excel 文件上传hive 或者 kudu

大数据开发过程中,难免需要上传手工数据到表中,这里介绍常见的几种上传方法。1、txt 上传hivea、首先注意解决乱码问题,需要将txt另存成 udf-8。只需要用记事本打开,然后另存即可。b、在hive上建表(txt 文件的数据是用 逗号 “,” 隔开的)c、将 txt 文件上传到服务器中,然后执行下面的sql:如果需要覆盖原来的table,执行下面的语句:2、xlsx(excel )表格类文件上传a、先将文件另存为 .csv(逗号隔开) 文件接下来的步骤 同上面 1、txt 上传hiv

2022-07-11 20:59:55 2128

原创 MANUAL_FLUSH is enabled but the buffer is too big 解决办法 及 产生原因分析

org.apache.kudu.client.NonRecoverableException: MANUAL_FLUSH is enabled but the buffer is too big 报错根因及解决办法

2022-07-08 09:15:00 557

原创 基于explain分析进行SQL优化(实例分析)

背景最近遇到一个问题,实现相同功能的几个 sql 不知道哪个最优。当然直接测试可以得到最终结论,但是还是不知道为啥慢,为啥快,还可以怎么样再进行优化?这些问题没有解决。下面通过一个实例来介绍下 sql 优化神器 Explain,它可以辅助进行 sql 优化。案例存在两张表,第一张表是item表(10w+),存储了人力资源分配单据的概要信息(存储了id、company_id、sn),第二张表是detail(1000w+)表,存储了人力资源分配单据的详细信息(存储了id、company_id、sn和per

2022-03-04 22:00:00 2086 1

原创 浅谈 数仓建设之 数据同步(离线)及 sqoop、flume、dataX 原理简介

简介在数仓建设中,数据同步是最基础的一步,也是 ods 层数据的来源。数据同步 简而言之,就是把 业务库中的需要分析的数据表(或文件) 同步到 数仓中(hdfs)。同步的方式可以分为3种:直连同步、数据文件同步、数据库日志解析同步。下面将进行详细介绍。详解1、直连同步直连同步是指通过定义好的规范接口api 和动态链接库的方式直连业务库。优点:配置简单,实现容易,比较适合操作型业务系统的数据同步。缺点:1、直连的方式对源系统的性能影响较大,甚至可能拖垮业务系统;2、数据量很大时,性能很差

2022-02-23 15:25:25 4580 4

原创 一次spark sql 优化的经历: SparkException: Job aborted / spark.yarn.executor.memoryOverhead

问题背景某天 跑 sparkSQL 的时候,遇到报错:org.apache.spark.SparkException: Job aborted.at org.apache.spark.sql.execution.datasources.FileFormatWriter.write(FileFormatWriter.scala:198)atorg.apache.spark.sql.hive.execution.SaveAsHiveFile.write(FileFormatWriter.scala:198

2022-02-17 19:26:33 6021

原创 spark(sparkSQL)报错 WARN TaskMemoryManager: Failed to allocate a page (bytes), try again.

背景最近在跑 sparkSQL的时候,执行到一半,频繁打印日志报错:WARN TaskMemoryManager: Failed to allocate a page (104876 bytes), try again.WARN TaskMemoryManager: Failed to allocate a page (104876 bytes), try again.…原因执行任务的内存不够,需要频繁回收资源解决办法1、优化sql脚本。(首选,当时我就是这么解决的)2、增加driver内

2022-02-15 21:45:00 3434

原创 详解 impala的ndv()函数 原理(HyperLogLog (HLL))、使用方法、精度误差及替换方案

背景最近使用impala做查询的时候,遇到一个sql 中使用多个列 count(distinct) 查询导致报错的情况,报错内容如下:org.apache.hive.service.cli.HiveSQLException: AnalysisException: all DISTINCT aggregate functions need to have the same set of parameters as count(DISTINCT ); deviating function: count(DI

2022-02-15 21:30:00 2458

原创 nc -lk 7777 报错 nc: invalid option -- k

最近在学习 flink,通过 nc 模拟实时数据。但是在windows下输入 nc -lk 7777 出现如下报错:C:\Users\7371>nc -lk 7777nc: invalid option -- knc -h for help经过一番查找,终于得到解决。windows不同于linux, win+R,cmd 后直接输入 nc -l -p 7777 即可...

2021-11-12 22:00:00 3135

原创 flink简单入门小项目 words count

这是flink入门的一个小项目,分享出来一起学习,路过就给个赞呗~~~~~~words count 简而言之就是统计单词出现的次数,项目分成两部分:1、数据来源于 txt 文件, 2、通过socket在线发送数据,模拟实时系统。开发环境:IDEA + JDK1.8 + MAVEN一、通过maven引入需要的jar包<dependencies> <dependency> <groupId>org.apache.flink&l

2021-11-12 20:30:00 2146

原创 oracle通过 表名、列名、字段名、注释 找到所在库 或者所在表

最近在开发过程中,由于涉及的库太多,有时候知道关联的列名 或者表名,找不到源库了。所以整理了下面的文章,希望对你有帮助。有用的话记得点赞哟~~~**1、通过表名找到所在库**例子:有一张 STUDENT_BASE_INFO 表,但是库太多了,不知道在哪个库。执行sql:select * from all_tables where table_name = 'STUDENT_BASE_INFO';结果如下:**2、通过列名找表及所在库**例如:知道一个列名age,但是不知道在哪张表里

2021-11-11 17:46:50 9140 2

原创 memcached集群分布式缓存的hash一致性算法【图解】

先来一张图,memcached分布式集群的访问模型图:上图中,api访先问memchached集群时,先通过路由算法获取key所对应的物理机器IP,然后再到相应的服务器上获取缓存数据。下面通过路由算法来解释hash一致性算法:传统hsah算法最简单的计算方法是对key的hash取模,然后获取所在机器。如下图所示,假如有3台机器作为集群,当要访问一个key的value时,先对key取hash值然后除以3,即可得出在第几台机器。然后去相应的机器访问取值。上述算法是最简单最直接的的办法。但是会有很大

2021-03-18 21:25:46 276

原创 邮件附件标题中文乱码=UTF-8Q=E9=A2=84=E8=......8D-4.pdf=

邮件发送时,附件标题中文乱码,本来是一个中文,但是收到邮件的时候,就显示成了=UTF-8Q=E9=A2=84=E8=A7=88_=E5=90=8D-4.pdf= 。没有稳定复现,但是出现问题的邮件能复现该现象。调用的编码java api为:MimeUtility.encodeText()。经过排查,发现日志如下:文件名编码后,在发送的过程中由于过长被截成两段了,导致解码失败。解决方案:System.setProperty(“mail.mime.splitlongparameters”, “fa

2020-12-06 20:01:50 3599

原创 “Comparison method violates its general contract!”问题原因及解决办法

开发中踩到的坑。通过arraylist.sort对元素进行排序,测试阶段没发现,上线后不久报了这个错误。“Comparison method violates its general contract!”。查了一些资料,下面总结一下。先贴下出错的代码:stus.sort((o1, o2) -> { if(o1 == null || o2 == null || o1 == o2) { return 0; }

2020-10-22 22:14:11 46636 1

原创 解决读取配置文件properties多种文件格式乱码的问题(自适配properties编码格式)

aa

2020-09-28 22:26:20 358

原创 开发中遇到的坑——用Arrays.asList将数组转成list,调用用add()方法报错Exception in thread “main“ java.lang.UnsupportedOperati

最近项目中遇到了一个坑,项目启动没问题,一直正常运行,有一次报了莫名其妙的错误:Exception in thread “main” java.lang.UnsupportedOperationExceptionat java.base/java.util.AbstractList.add(AbstractList.java:153)at java.base/java.util.AbstractList.add(AbstractList.java:111)at arraylist.Test.main

2020-09-08 19:47:00 327

原创 常用设计模式之——观察者模式、出版订阅模式(订阅广播模式)

最近项目的需要,刚好用到观察者模式,在这里简单分享下使用心得。观察者模式、出版订阅模式(订阅广播模式)都可以称为观察者模式。首先看一下观察者模式的定义:多个对象之间的一对多依赖,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。典型的应用就是1、消息推送,比如在oa系统上面,当某个人改变了oa流程的状态,则其他人应该收到修改的消息。2、还有一种场景就是 文件共享。A用户将文件共享给B用户、C用户、D用户,当A用户对文件进行更新时,就需要对B、C、D用户本地的文件进行同步更新;3、微

2020-09-05 17:07:51 614

原创 常用设计模式之单例模式(懒汉模式、饿汉模式)

qeder

2020-08-29 23:09:56 89

原创 java DateFormat的自定义pattern的格式解析规则:忽略特定的单词

自定义DateFormat开发中最常用的日期解析类是simpleDateFormat,往往能完成大部分对日期解析、或者转成固定格式字符串的需求。但有时候对pattern的解析有更加复杂的需求,比如忽略掉pattern中的某些单词,或者按照自定义的脚本进行解析,这时候就需要自己定义规则了。举个例子来说,希望将2020/8/29 转换成 “FY2020”来展示,如果pattern是“FYyyyy”,明显解析出来的结果并不是我们想要的。以该需求为例,下面自定义一个日期处理类AdvanceDateForma

2020-08-29 21:38:37 1471

原创 解决weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection

今天部署一个应用程序出现问题,在tomcat上测试好好的,但是部署到weblogic之后报错:weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection,是在调用post或者get方法时候出错的。经过查阅资料后找到两种解决办法,测试真实有效:1、构造url使用新的构造方法(推荐使用):URL url = new URL(null, urlstr, new sun.net.www.

2020-06-12 23:42:12 1711 2

原创 Integer的==与equals比较——开发中遇到的大坑

wde

2020-06-11 09:29:54 394

原创 理解ouath2.0--实现过程、4种授权模式、安全事项以及解决重定向过程中参数丢失的问题

sfdr

2020-06-05 12:27:17 913

原创 BigDecimal踩过的那些坑,BigDecimal一定不会丢失精度吗?

当需要进行高精度计算时,比如银行系统的money结算,一般都会采用BigDecimal来进行计算,这已经是一个常识了。但是BigDecimal一定不会丢失精度吗?先看一个例子:public class Test { public static void main(String[] args) { BigDecimal value1 = new BigDecimal(0.1); BigDecimal value2 = new BigDecimal(0.2); Sy

2020-05-27 10:31:39 900

原创 java中SimpleDateFormat和Calender的简单用法(有项目实例及代码)

最近做项目用到这两个类,还是很方便的,很想分享给大家。业务背景介绍首先说下业务场景,我们做的是oa系统,在创建流程的时候,让用户输入一个时间,然后流程延后启动。那么用户在输入时间的时候,就有两种方式可以选择:具体的时间,比如 2020/05/25 08:00:00,流程将会在这个时间节点启动;输入增量,比如延后 0年0月3天2时0分0秒;由于前台往后台传的是json字符串,后台需要做的是解析成具体的时间date,然后以固定的格式返回给用户,比如“2020-05-25,08:00”。由字符

2020-05-24 08:53:43 239

原创 java中finalize()的用法

java虚拟机中的内存清理,是通过垃圾回收器来进行清理的,这个过程是不需要程序员来操心。一个对象被用完之后,在某个时间段就会被回收,如果这个对象用完之后就“弃之不顾”,或许会有一些安全问题。因此这个方法存在的意义就是,这个对象被处理前能做的最后一件事。finalize()是object类的一个方法,当堆中的对象被回收时,会先调用这个方法,然后对象才会被销毁。先来看一段代码:下面的代码中,将会创建一个礼物生产工厂对象,该对象重写了finalize()方法。如果gifts仓库中的礼物还没有被拿完,就被

2020-05-21 21:55:16 254

空空如也

空空如也

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

TA关注的人

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