- 博客(49)
- 资源 (7)
- 收藏
- 关注
原创 Delta lake with Java--读《Delta Lake Up and Running》总结
第三章 Delta lake最基本操作,包括建库,建表,描述表结构,插入数据,查询数据,可以通过3种方式实现,分别是spark sql+sql语句,spark dataframe api,deltatable api,个人觉得用sql语句比较简单。第七章 表结构变化处理,主要是两类处理,一类是固定结构,遇到不一致的就报错,另外一个类就是结构可以根据数据变化,要实现主要在数据写入的时候,设置option("mergeSchema",true)。
2024-05-05 20:59:07
627
3
原创 Delta lake with Java--使用stream同步数据
今天继续学习Delta lake Up and Running 的第8章,处理流数据,要实现的结果就是在一个delta表(名为:YellowTaxiStreamSource)插入一条数据,然后通过流的方式能同步到另外一个delta表 (名为:YellowTaxiStreamTarget)。接着在YellowTaxiStreamSource更新数据YellowTaxiStreamTarget也能更新。至于删除也尝试过了,发现删除是没有办法同步的。
2024-05-05 16:02:14
465
1
原创 Delta lake with Java--liquid clustering
第一个遇到的情况,不能像之前那样逐列定义表,即使用sql语句也不行,一定要从另外一个表select数据才能建表成功,具体见代码中sqlText定义。比较一下查询效率,好像没有什么区别,也不知道是不是我的代码有问题,还是本身还是实验阶段。先记录下来,后面继续跟进学习。第二个遇到的情况,判断表是否存在不生效,所以建表的sql运行完第一次后要注释掉否则就会报错。
2024-05-04 15:32:57
346
原创 Delta lake with Java--分区表
今天尝试一下将昨天的数据操作建立的表换成分区表,参考Delta Lake Up and Running做法用分区表的方式来更新数据。还要比较一下分区表的查询与非分区表的查询,结果显示分区表的查询速度要比非分区表要快。从最后一张图红框可以看到比较结果,分区表查询效率要高一点。
2024-05-04 14:24:56
599
原创 Delta lake with Java--数据增删改查
里面涉及spark的TimestampType类型,如何将字符串输入到TimestampType列,找了几个小时才找到答案,具体参考了如下连接,原来直接将string转成java.sql.Timestamp即可,于是在网上找了一个方法,实现了转换,转换代码非原创,也是借鉴其他大牛的。之前写的关于spark sql 操作delta lake表的,总觉得有点混乱,今天用Java以真实的数据来进行一次数据的CRUD操作,所涉及的数据来源于Delta lake up and running配套的 Git。
2024-05-03 15:52:51
912
3
原创 Delta lake with Java--利用spark sql操作数据2
里面涉及的数据集YellowTaxi,在如下地址下载,这个也是Delta Lake Up and Runing的配套仓库。具体运行结果如下,没有什么需要注意的,纯粹就是输入一下代码,验证一下结果。
2024-05-01 15:36:52
943
1
原创 Delta lake with Java--利用spark sql操作数据1
代码主要实现建立一个表名为YellowTaxi,插入5条数据,然后查询YellowTaxi这5条数据,再建立一个表YellowTaxiPartitioned,YellowTaxiPartitioned是分区表。具体文字内容如下,从结果可以看出分区表的查询效率要比不分区表要好,后面建表还是要用分区表。不分区查询开始时间(含毫秒): 2024-05-01 11:29:39.655。不分区查询结束时间(含毫秒): 2024-05-01 11:29:40.130。
2024-05-01 11:36:12
957
6
原创 Delta lake with Java--将数据保存到Minio
3、修改pom.xml增加hadoop-aws依赖,这里要注意版本号,不知道如何确定版本号,去spark下载目录里面的jar目录,找hadoop-client-api-***.jar,其中***就是版本号了。config("spark.hadoop.fs.s3a.fast.upload.buffer", "bytebuffer")这一行一定要添加,否则会报错。1、安装Minio,去官网下载最新版本的Minio,进入下载目录,运行如下命令,曾经尝试过用docker来安装,不过数据无法保存成功。
2024-04-30 15:49:12
550
1
原创 Delta lake with Java--在spark集群上运行程序
今天要实现的内容是如何将昨天的HelloDetlaLake 在spark集群上运行,。里面的解决方法就是把Delta lake相关的jar包复制到spark安装目录下面的jar目录里面,于是决定尝试一下。复制完后,记得重新运行第2和第3步,重启spark。该问题又花了半天的时间到处找,最终找到一个类似的。
2024-04-29 08:58:50
499
原创 如何令containerd连接私有harbor
尝试用kubeadmin安装k8s 1.27.6,并使用containerd来运行容器,结果containerd连harbor这个问题搞了我一天,终于搞通了。发现情况跟我一样,我的harbor也是只有IP,虽然使用的是https,但端口号改了3443,参考做法,居然成功了,总结步骤如下。搞了一天,终于搞通了,无论做科研,搞研究,只要不放弃,肯努力一定会有收获的。心灰意冷,准备换回docker,后来找到这篇文章。接着参考网上很多方法,搞了一天,结果都失败。harbor使用自签证书安装。
2024-01-22 09:14:32
1729
原创 如何通过开源项目搭建私有云平台--第三步补充,harbor升级
昨天编写第三步的时候,无意发现原来之前使用的harbor是1.10.17的版本,最新版本是2.8,相差太多了,所以决定升级
2023-04-19 10:08:46
473
原创 如何通过开源项目搭建私有云平台--第二步:部署代码仓库
前文再续,书接第一步,安装完Minio后搭建代码仓库,介绍如何用Minio进行代码仓库的备份
2023-04-17 10:53:28
1051
原创 如何通过开源项目搭建私有云平台--第一步:安装Minio
从事K8s私有云平台研发工作差不多5年了,在国企由于不能使用开源工具,所以全部要自研,连K8s都要从二进制开始安装。但去到小厂,如果一切自研,太耗费成本,本系列文章,总结一下,如何通过开源的项目快速搭建私有云平台,并实现CI/CD持续集成过程。
2023-04-14 11:23:57
1462
原创 在docker里面运行centos,并成功编译gdal
一、背景 最近转行搞与地理信息系统相关的工作,遇见第一个问题就是java程序要读取arcgis的gdb文件时,一定要安装arcgis,导致服务无法docker部署,为了解决该问题开始调研,发现gdal可以在无arcgis的前提下成功通过java读取gdb文件。网上已经有window平台实现方案,我也已经在window开发机器跑到,问题是java程序是要部署在centos上,如何在centos部署gdal成为了一个需要解决的问题二、解决过程1、运行环境,由于资源缺乏,暂时只能在wind...
2021-03-05 17:29:15
963
原创 如何在centos pod里面运行crontab任务
今天收到一个需求,服务部署到kubernetes需要在pod容器里面运行crontab 定时任务,这里不能使用kubernetes的cronjob功能,上网找了一个上午,终于解决问题,具体dockerfile 如下:FROM centos:7USER rootRUN yum update -y && \ yum reinstall -y glibc-common && \ yum install -y kde-l10n-Chinese &am...
2020-07-29 11:50:26
1834
1
原创 如何用minikube快速入门kubernetes-minikube 安装istio
1,下载istio由于使用的minikube使用的是kubernetes 1.14,所以只能安装1.4版本的istio,由于是在window使用minikube所以下载win版本https://github.com/istio/istio/releases/download/1.4.10/istio-1.4.10-win.zip2,安装istio下载后,解压,将解压后bin目录下的istioctl.exe 添加到path环境变量使用minikube start启动k8s集群运行is.
2020-07-12 21:13:47
937
原创 部署calico
上一篇文章介绍了如何二进制部署一个单点的k8s集群,一直没有时间继续完善其他组件的部署,这周末终于有时间部署了一下calico,网上搜索了一下,文章一大堆,尝试跟着做,踩了几个坑,现在总结一下步骤1、下载calico 部署yaml...
2020-07-05 17:20:10
4657
原创 如何用minikube快速入门kubernetes-运行第一个服务hello minikube
1,进入cmd,运行minikube start2,输入命名kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10 从阿里云用1.10版本的echoserver新建deploymeng 通过kubectl get pod --all-namespaces看到 hello-minikube相关的pod存于ru...
2020-05-31 19:50:27
742
原创 使用二进制单机部署k8s 1.18.2
背景:对于k8s学习者,有一个真实的环境十分重要,但要用二进制搭建一个学习环境是一件十分复杂的过程,查了一下网上的文档,大多数都是几台服务器来搭建集群的,本文以一台机器搭用二进制的方法搭建一个简单的k8s集群。1、机器环境操作系统:centos 7虚拟机ip:192.168.225.1322、单机部署etcd1)下载etcd使用版本3.4.7,下载地址h...
2020-05-05 19:17:33
3071
1
原创 记一次Kubernete集群崩毁恢复经历
事故说明:k8s集群资源有限,在同一时刻内进行大量滚动升级。造成整个集群cpu,io,内存同一时刻飙到最高,导致集群里面4台机器死机,需要人手重启,重启后,对应的calico pod 出现 pullImageErr的状态。处理步骤1,尝试删除calico pod,没有任何帮助2,登录calico pod ,用docker images没有发现calico镜像,利用docker pu...
2019-12-06 16:50:28
358
原创 如何用minikube快速入门kubernetes--入门
1,背景 曾经在前一家公司作为运维研发,开发基于kubernetes的CD系统,由于旧公司经营出了问题,开始了寻找新工作的道路,很幸运找到了一个国企,不过要转作与kubernetes相关的运维与研发工作,之前只有研发经验。因此开始了重新探索kubernetes的道路。2,入门 在网上找了很多资料,发现minikube这个软件,之前都是通过在机器上安装虚拟机来搭建kubernete...
2019-10-14 15:49:14
408
原创 读《图解java多线程设计模式》总结--Future
1,从名字上看,Future就是将来的意思,可以这样理解当调用一个方法时,与其一直等待,不如先拿一个代表将来才能兑现的对象,然后等过来一段时间再通过这个对象获取真实结果。在生活中一个经常发生的例子就是提货单,我们去店铺下需求,可能不是马上能够收到我们需要的东西,这时会给你一张提货单(一个代表将来才能兑现的对象),过一段时间再拿这张提货单来提货2,适用范围,与Thread-Per-Message...
2019-04-22 22:44:21
197
原创 读《图解java多线程设计模式》总结--Worker Thread
1,从名字上看,工人线程可以联想到有一家工厂,里面有固定数量的工人,每个工人收到任务后都会独立开展工作,相互之间互不影响。每个工人就可以当作是一个独立的线程,由于工人的数量有固定的,所以线程的数量也是固定。2,适用范围,该模式可以看作是一种线程池模式,一个工厂里面有多少个工人,这个是一个固定的数量,相当于在程序启动的时候先建立好固定数量的线程,然后这些线程不断的处理来自四面八方发送到该工厂的请...
2019-04-21 22:17:46
372
原创 读《图解java多线程设计模式》总结--Thread-Per-Message
1,从名字上看,就是每一条信息一条线程,这里的信息可以看作是一次请求,相当于对于每一次请求都会独立开启一条线程来处理2,适用范围,对于某些请求由于处理时间较长,但又不需要等待返回结果,也没有要求处理一定要按某种顺序进行,此时就适合用Thread-Per-Message3,实现方式,这里有3个概念,第一个是Client表示发起请求端,第二个是Host,可以把他看作是接受请求,接受后为每一个请...
2019-04-18 22:50:01
161
原创 读《图解java多线程设计模式》总结--Read-write Lock
1,从名字上看就是一种比较特殊的锁,该锁能针对读和写操作分别对读线程和写线程进行不同的处理,确保不会出现冲突情况2,适用范围,对于共享资源,如果两个线程同时进行读操作是不会发生任何冲突的,因为读操作不会修改共享资源的值。但如果一个线程在读,另外一个线程在写,或者两个线程同时进行写操作,那么就会发生冲突,Read-write Lock模式就是用于这种场景下,一方面同时读不加锁提高性能,另一方面防...
2019-04-16 23:36:51
126
原创 读《图解java多线程设计模式》总结--Producer-Consumer
1,从名字上看,就是多线程教程中最普遍的消费与生产问题。2.适用范围,由于消费和生产分别由不同的线程来进行,这里就有一个速度同步的问题,有可能消费线程运行比较快,产品还没有被生产出来,也有可能消费线程运行比较慢,产品造成了积压,Producer-Consumer就是要解决消费线程与生产线程的同步问题。3,实现方式,这里有3个概念,Producer生产者,负责生产产品,这里的产品可以是普通的...
2019-04-15 23:03:47
195
原创 读《图解java多线程设计模式》总结--Balking
1,从名字上看,balk是拒绝的意思,目的是确保在多线程条件下各线程能正常操作共享资源,该模式有点类似Guarded Suspension模式,唯一不同的是,Guarded Suspension当不满足守护条件的情况下会触发线程等待,而Balking当不满足守护条件时直接返回,不会触发线程等待。2,适用范围,Balking模式的特点就是不进行等待,当守护条件不成立的时候,要立即进行其他操作,就...
2019-04-14 22:17:09
176
原创 读《图解java多线程设计模式》总结--Guarded Suspension
1,从名字上看就是增加了守护功能的一种设计模式,目的是确保在多线程条件下各线程能正常操作共享资源,如果触发了守护功能,相关的线程就必须等待,直到守护功能确保不会出现操作异常才会让线程继续执行下去。2,与Single Threaded Execution相似都是为了保护共享资源,只不过Single Threaded Execution是无条件的多线程互斥,而Guarded Suspension...
2019-04-13 23:22:48
161
Feature_Extraction_in_Computer_Vision_and_Image_Processing_-_Mark_S[1]._Nixon
2009-07-12
Building Intelligent .NET Applications: Agents, Data Mining, Rule-Based Systems, and Speech Processing
2009-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人