- 博客(88)
- 收藏
- 关注
原创 详解Spark 数据倾斜(Data Skew)
Spark 数据倾斜(Data Skew)是一个比较常见的问题。它指的是数据分布不均匀,部分key对应的value数据过多。
2023-05-11 14:58:04
440
原创 初识Spark
组件含义关系作用一个Spark应用提交一个或多个Job完成用户业务任务Spark应用的入口管理一个或多个Job处理数据和运行任务JobSpark负责调度和执行的最高级工作单元由一个SparkContext提交完成一件工作Stage多个任务的逻辑划分多个Stage构成一个Job将任务进行分组Task可以独立运行的工作单元一个Stage由一个或多个Task组成执行转换操作TaskSetTask的集合执行相同transformation优化内存和网络使用。
2023-05-11 11:43:42
68
原创 Hive不同的存储格式比较
存储格式概念区别使用场景优点缺点建表语句磁盘空间查询效率存储效率文本文件(TEXTFILE)将数据存储为文本格式适合存储小数据量、可读性要求高的场景易于使用、可读性强存储格式简单读取速度较慢、不适合存储海量数据较大,每行数据都以文本形式存储读取速度较慢存储效率低序列文件(SEQUENCEFILE)将数据存储为二进制格式适合存储大数据量、对可读性要求不高的场景读取速度快、易于存储大数据量存储格式紧凑、可压缩不支持单独读取某一列。
2023-05-10 17:26:35
875
原创 Mysql数据库表如何设计?
模型优点缺点应用场景三范式减少数据冗余,提高数据一致性和可维护性需要频繁进行表连接操作,查询效率较低适用于需要高度数据一致性和可维护性的业务场景反范式提高查询效率,减少表连接操作增加数据冗余和存储空间,降低数据一致性适用于需要高查询效率的业务场景,例如电商网站等ER模型简单易懂,能够清晰地描述实体、属性和实体之间的关系设计复杂的关系时,可能需要额外的设计和优化适用于设计复杂的数据结构,需要清晰地描述实体之间的关系的业务场景,例如图书馆管理系统等。
2023-05-10 15:49:23
3675
原创 如何理解Spark RDD
在实际开发中,应该尽可能使用窄依赖,因为窄依赖可以允许Spark在同一个节点上对多个RDD分区进行计算,从而实现高效的计算,减少数据的传输和复制,具有更高的计算效率和更少的网络开销。相反,宽依赖会导致Spark在不同节点之间进行数据的传输和复制,从而增加网络开销和计算负担,降低计算效率,同时也会增加资源的消耗和计算时间的成本。但是,在某些情况下,使用宽依赖可能是必要的,例如进行groupByKey操作和。
2023-05-09 21:28:25
201
原创 长文解析数仓建模过程(纯理论)
首先需要进行需求分析,了解政府部门的税务管理业务流程和数据来源,明确数据集成的需求和目标,以及需要分析的数据指标和报表需求。需求分析是数仓建模的重要一环,它是指对业务需求进行分析和梳理,明确需要处理的数据及其关系和约束,以便在建模和开发过程中明确目标和方向,为后续的数据集成、清洗、转换、加载和分析提供基础。
2023-05-08 12:07:13
538
原创 万字总结,关于HBase
HBase 是一个开源的、基于列族存储、分布式的 NoSQL 数据库,它是 Apache Hadoop 生态系统中的重要组成部分,具有高可靠性、高性能、高扩展性等特点,主要用于海量结构化数据的读写操作。HBase 的设计目标是面向海量数据的存储和访问,它采用分布式架构,将数据存储在多个节点上,并通过水平扩展的方式增加节点数量,从而实现数据的高可靠性和高性能。HBase 支持数据的自动分区、数据的压缩和缓存、数据的批量读写等特性,可以有效地处理大规模数据的存储和分析需求。
2023-05-05 19:35:13
1136
原创 数据开发 数据仓库 ETL 报表开发 数据分析都是干什么的?
目前,大数据技术已经广泛应用于金融、电商、医疗、物流等领域,对这些行业的发展起到了重要的推动作用。未来,随着人工智能、区块链等技术的不断发展,大数据技术的应用前景更加广阔。需要注意的是,这些岗位之间的界限并不是非常明确,有些岗位的职能可能会涉及到其他岗位的工作。因此,在大数据领域,综合能力和跨界合作能力也是非常重要的。同时,随着技术的不断发展和变革,学习和掌握新的技能和工具也是这些岗位必备的素质之一。在大数据领域,数据开发、数据仓库、ETL、报表开发、数据分析、数据建模和数据产品等岗位扮演着重要的角色。
2023-05-05 12:15:48
491
原创 浅析ZooKeeper
Zookeeper是一个分布式的开源协调服务,它可以用于管理大型分布式系统中的配置信息、命名服务、分布式锁、分布式队列等。Zookeeper可以提供高可用性和高性能,使得分布式系统中的各个节点可以协调工作,以确保系统的正确性和可靠性。
2023-05-03 16:22:11
687
原创 交换机和路由器有什么区别?
交换机和路由器是网络中最常见的两种设备,它们都是用来连接不同的计算机和网络设备,但是在具体的工作原理、实现方式、用途、应用和成本等方面有一些区别。下面是对这些方面的分析。
2023-05-01 22:20:42
4108
1
原创 Docker基础篇_浅谈容器数据卷
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷一句话:有点类似我们Redis里面的rdb和aof文件;将docker容器内的数据保存进宿主机的磁盘中docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名。
2023-05-01 22:02:28
82
原创 Docker基础篇_本地镜像发布到私有库
公式:docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调。按照公式: docker tag 镜像:Tag Host:Port/Repository:Tag。2我们自己commit构建的新镜像,新增加了ifconfig功能,可以成功使用。可以看到,目前私服库没有任何镜像上传过。命令:在容器外执行,记得。
2023-05-01 22:01:52
127
原创 Docker基础_将本地镜像发布到阿里云
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]基于当前容器创建一个新的镜像,新功能增强。6.将镜像推送到阿里云registry。1.选择控制台,进入容器镜像服务。7.将阿里云上的镜像下载到本地。5.进入管理界面获得脚本。
2023-05-01 22:00:46
128
原创 Docker基础篇_镜像
对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。而且镜像的每一层都可以被共享。以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载。
2023-05-01 21:58:59
191
原创 Docker基础篇_常用命令
启动docker: systemctl start docker停止docker: systemctl stop docker重启docker: systemctl restart docker查看docker状态: systemctl status docker开机启动: systemctl enable docker查看docker概要信息: docker info查看docker总体帮助文档: docker --help。
2023-05-01 21:58:22
75
原创 Docker基础篇_安装
需要正确的理解仓库/镜像/容器这几个概念:Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。image文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。镜像文件。
2023-05-01 21:55:59
89
原创 Docker基础篇_简介
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。因此容器要比传统虚拟机更为轻便。
2023-05-01 21:53:28
75
原创 Mysql中的锁机制
MySQL中有多种锁机制,包括共享锁和排他锁,用于控制并发访问和保证数据的一致性。下面我会简单介绍一下MySQL中的锁机制。
2023-04-30 22:59:57
146
原创 Kafka怎么保证数据不丢失,不重复
Kafka是一个分布式消息队列系统,具有高可靠性、高性能和高扩展性等特点。在数据传输过程中,Kafka采用了多种措施来保证数据的可靠性,包括数据复制、数据持久化、数据备份等。本文将从各个阶段深入分析Kafka如何保证数据不丢失、不重复,并提供代码实例来验证过程。
2023-04-30 17:17:08
5621
原创 HiveSQL执行计划查看(EXPLAIN)
HiveSQL执行计划是指查询语句的执行过程,包括查询语句的优化、查询计划生成和查询执行。通过EXPLAIN命令,我们可以查看查询语句的执行计划,找到性能瓶颈和优化方案,调试查询语句,加深对查询过程的理解。在实际使用中,我们可以根据需要选择不同的参数来获取不同的执行计划信息。
2023-04-30 17:05:01
3089
原创 Mysql中,varchar字段最大长度为什么是65535
在MySQL中,varchar字段的最大长度确实是65535。这个限制是由于MySQL内部存储varchar字段时,使用了2个字节来存储字符串的长度信息。因此,varchar字段的最大长度实际上是2的16次方减1,即65535。在本篇文章中,我们将从以下几个方面来探讨为什么varchar字段的最大长度是65535,并提供具体的代码实现和SQL语句。
2023-04-30 16:51:46
2169
原创 Mysql字段类型char和varchar解析
具体来说,char类型的字符串长度是固定的,如果存储的字符串长度小于定义的长度,MySQL会在字符串末尾自动添加空格字符。在这个例子中,name_char是一个长度为20的char类型的字段,name_varchar是一个长度为20的varchar类型的字段。但是char类型会浪费存储空间,因为如果存储的字符串长度小于定义的长度,MySQL会在字符串末尾自动添加空格字符,而这些空格字符是浪费存储空间的。char类型的字符串长度是固定的,而varchar类型的字符串长度是可变的。
2023-04-30 16:45:37
804
原创 Java_斜三角
在上面的代码中,我们定义了一个名为DiagonalTriangle的类,其中包含一个main方法,用于打印斜三角。然后,我们使用两个for循环,遍历每一行和当前行的每一个数。具体地,我们先输出当前行的前半部分,即第一个数到倒数第二个数,如果是最后一个数就直接输出,否则输出该数和一个空格。然后,我们再输出当前行的后半部分,即倒数第二个数到第一个数,每个数后面加一个空格。同时,该算法打印的斜三角是左下方向的,如果需要打印右下方向的斜三角,可以将第一个for循环中的i改为从n到1的倒序遍历即可。
2023-04-29 09:15:00
105
原创 Java_杨辉三角
在上面的代码中,我们定义了一个名为YangHuiTriangle的类,其中包含一个main方法,用于打印杨辉三角。我们首先创建了一个Scanner对象,用于从控制台读取用户输入的行数。然后,我们创建一个二维数组arr,用于保存杨辉三角。接着,我们使用两个for循环,遍历每一行和当前行的每一个数。具体地,我们根据杨辉三角的规律,初始化第一列和最后一列为1,其他位置为上一行前后两个数之和,并输出当前数。最后,我们换行输出下一行。
2023-04-29 09:00:00
53
原创 Java_生成随机数组
在上面的代码中,我们定义了一个名为RandomNumbers的类,其中包含一个main方法,用于生成不重复的随机数。我们首先创建了一个HashSet集合set,用于保存随机数,并创建了一个Random对象random,用于生成随机数。然后,我们使用一个while循环,不断生成随机数,直到集合中的元素个数为7。由于HashSet集合不允许重复元素,因此可以保证生成的随机数不重复。最后,我们输出生成的随机数。需要注意的是,该算法生成的随机数是伪随机数,实际应用中可能需要使用更加安全的随机数生成方式。
2023-04-28 19:36:00
2401
原创 Java_猴子吃桃
在上面的代码中,我们定义了一个名为MonkeyPeach的类,其中包含一个main方法,用于计算猴子吃桃的问题。我们首先创建了一个Scanner对象,用于从控制台读取用户输入的天数。然后,我们使用一个for循环,从第一天到第days-1天,倒推出每天的桃子数。具体地,我们从第days-1天开始,每天吃掉一半再多吃一个,最后得到第一天的桃子数。最后,我们输出第days天剩余的桃子数。需要注意的是,该算法是一个简单的模拟,不考虑其他因素,如猴子吃不完等,实际应用中可能会有误差。
2023-04-28 19:29:58
383
原创 Java_税率问题
在上面的代码中,我们定义了一个名为TaxCalculator的类,其中包含一个main方法,用于计算税金。我们首先创建了一个Scanner对象,用于从控制台读取用户输入的收入。然后,我们根据收入的不同范围,计算不同的税金。最后,我们输出税金的结果。需要注意的是,该算法是一个简单的税率计算器,不考虑其他因素,如社保、公积金等,实际应用中可能会有误差。
2023-04-28 19:26:35
466
原创 Java_小球下落
在上面的代码中,我们定义了一个名为BallDrop的类,其中包含一个main方法,用于模拟小球下落的过程。然后,我们定义了初始高度h0、时间t和当前高度h。接着,我们使用一个while循环模拟小球下落的过程,直到小球落地。在循环体中,我们先计算当前高度h,然后判断小球是否已经落地,如果是,则退出循环。如果小球还未落地,则输出当前时间t和当前高度h。最后,我们将时间t增加0.1秒,并继续下一轮循环。需要注意的是,该算法是一个简单的模拟,不考虑空气阻力等因素,因此在实际应用中可能会有误差。
2023-04-28 19:24:01
405
原创 Java_统计素数
在isPrime方法中,我们首先判断参数是否小于等于1,如果是,则不是素数,直接返回false。接着,我们使用一个for循环,从2开始到该整数的平方根,依次判断是否能被整除,如果能被整除,则不是素数,直接返回false。在main方法中,我们定义了一个整数count,用于记录素数的个数。然后,我们使用一个for循环,从100到200依次判断每个整数是否为素数,如果是素数,则将素数个数加1,并输出该素数的值。需要注意的是,该算法的时间复杂度为O(n*sqrt(n)),其中n为待判断的整数范围。
2023-04-28 19:21:59
322
原创 Java_判断是否为素数
在isPrime方法中,我们首先判断参数是否小于等于1,如果是,则不是素数,直接返回false。接着,我们使用一个for循环,从2开始到该整数的平方根,依次判断是否能被整除,如果能被整除,则不是素数,直接返回false。如果循环结束后都没有返回false,则说明该整数是素数,返回true。在main方法中,我们定义了一个整数num,然后调用isPrime方法判断该整数是否为素数,最后输出结果。需要注意的是,该算法的时间复杂度为O(sqrt(n)),其中n为待判断的整数。
2023-04-28 19:19:27
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅