原文链接:批流一体数据集成工具ChunJun同步Hive事务表原理详解及实战分享
课件获取:关注公众号__ “数栈研习社”,__后台私信__ “ChengYing”__ 获得直播课件
视频回放:点击这里
ChengYing 开源项目地址:github 丨 gitee 喜欢我们的项目给我们点个__ STAR!STAR!!STAR!!!(重要的事情说三遍)__
技术交流钉钉 qun:30537511
本期我们带大家回顾一下无倦同学的直播分享《Chunjun同步Hive事务表详解》
一、Hive事务表的结构及原理
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
在分享Hive事务表的具体内容前,我们先来了解下HIve 事务表在 HDFS 存储上的一些限制。
Hive虽然支持了具有ACID语义的事务,但是没有像在MySQL中使用那样方便,有很多局限性,具体限制如下:
以下矩阵包括可以使用Hive创建的表的类型、是否支持ACID属性、所需的存储格式以及关键的SQL操作。
了解完Hive事务表的限制,现在我们具体了解下Hive事务表的内容。
1、事务表文件名字详解
$partition/base_$wid/$bucket
$partition/delta_$wid_$wid_$stid/$bucket
$partition/delete_delta_$wid_$wid_$stid/$bucket
2、事务表文件内容详解
$ orc-tools data bucket_00000
{"operation":0,"originalTransaction":1,"bucket":536870912,"rowId":0,"currentTransaction":1,"row":{"id":1,"name":"Jerry","age":18}}
{"operation":0,"originalTransaction":1,"bucket":536870912,"rowId":1,"currentTransaction":1,"row":{"id":2,"name":"Tom","age":19}}
{"operation":0,"originalTransaction":1,"bucket":536870912,"rowId":2,"currentTransaction":1,"row":{"id":3,"name":"Kate","age":20}}
operation 0 表示插入、1 表示更新,2 表示删除。由于使用了 split-update,UPDATE 是不会出现的。
originalTransaction是该条记录的原始写事务 ID:
a、对于 INSERT 操作,该值和 currentTransaction 是一致的;
b、对于 DELETE,则是该条记录第一次插入时的写事务 ID。
bucket 是一个 32 位整型,由 BucketCodec 编码,各个二进制位的含义为:
a、1-3 位:编码版本,当前是 001;
b、4 位:保留;
c、5-16 位:分桶 ID,由 0 开始。分桶 ID 是由 CLUSTERED BY 子句所指定的字段、以及分桶的数量决定的。该值和 bucket_N 中的 N 一致;
d、17-20 位:保留;
e、21-32 位:语句 ID;
举例来说,整型 536936448 的二进制格式为 00100000000000010000000000000000,即它是按版本 1 的格式编码的,分桶 ID 为 1。
rowId 是一个自增的唯一 ID,在写事务和分桶的组合中唯一;
currentTransaction 当前的写事务 ID;
row 具体数据。对于 DELETE 语句,则为 null。
3、更新 Hive 事务表数据
UPDATE employee SET age = 21 WHERE id = 2;
这条语句会先查询出所有符合条件的记录,获取它们的 row_id 信息,然后分别创建 delete 和 delta 目录:
/user/hive/warehouse/employee/delta_0000001_0000001_0000/bucket_00000
/user/hive/warehouse/employee/delete_delta_0000002_0000002_0000/bucket_00000 (update)
/user/hive/warehouse/employee/delta_0000002_0000002_0000/bucket_00000 (update)
delete_delta_0000002_0000002_0000/bucket_00000
包含了删除的记录:
{"operation":2,"originalTransaction":1,"bucket":536870912,"rowId":1,"currentTransaction":2,"row":null}
delta_0000002_0000002_0000/bucket_00000
包含更新后的数据:
{"operation":0,"originalTransaction":2,"bucket":536870912,"rowId":0,"currentTransaction":2,"row":{"id":2,"name":"Tom","salary":21}}
4、Row_ID 信息怎么查?
5、事务表压缩(Compact)
随着写操作的积累,表中的 delta 和 delete 文件会越来越多,事务表的读取过程中需要合并所有文件,数量一多势必会影响效率,此外小文件对 HDFS 这样的文件系统也不够友好,因此Hive 引入了压缩(Compaction)的概念,分为 Minor 和 Major 两类。
● Minor
Minor Compaction 会将所有的 delta 文件压缩为一个文件,delete 也压缩为一个。压缩后的结果文件名中会包含写事务 ID 范围,同时省略掉语句 ID。
压缩过程是在 Hive Metastore 中运行的,会根据一定阈值自动触发。我们也可以使用如下语句人工触发:
ALTER TABLE dtstack COMPACT 'MINOR'。
● Major
Major Compaction 会将所有的 delta 文件,delete 文件压缩到一个 base 文件。压缩后的结果文件名中会包含所有写事务 ID 的最大事务 ID。
压缩过程是在 Hive Metastore 中运行的,会根据一定阈值自动触发。我们也可以使用如下语句人工触发:
ALTER TABLE dtstack COMPACT 'MAJOR'。
6、文件内容详解
ALTER TABLE employee COMPACT 'minor';
语句执行前:
/user/hive/warehouse/employee/delta_0000001_0000001_0000
/user/hive/warehouse/employee/delta_0000002_0000002_0000 (insert 创建, mary的数据)
/user/hive/warehouse/employee/delete_delta_0000002_0000002_0001 (update)
/user/hive/warehouse/employee/delta_0000002_0000002_0001 (update)
语句执行后:
/user/hive/warehouse/employee/delete_delta_0000001_0000002
/user/hive/warehouse/employee/delta_0000001_0000002
7、读 Hive 事务表
我们可以看到 ACID 事务表中会包含三类文件,分别是 base、delta、以及 delete。文件中的每一行数据都会以 row_id 作为标识并排序。从 ACID 事务表中读取数据就是对这些文件进行合并,从而得到最新事务的结果。这一过程是在 OrcInputFormat 和 OrcRawRecordMerger 类中实现的,本质上是一个合并排序的算法。
以下列文件为例,产生这些文件的操作为:
插入三条记录
进行一次 Major Compaction
然后更新两条记录。
1-0-0-1 是对 originalTransaction - bucketId - rowId - currentTra
8、合并算法
对所有数据行按照 (originalTransaction, bucketId, rowId) 正序排列,(currentTransaction) 倒序排列,即:
originalTransaction-bucketId-rowId-currentTransaction
(base_1)1-0-0-1
(delete_2)1-0-1-2# 被跳过(DELETE)
(base_1)1-0-1-1 # 被跳过(当前记录的 row_id(1) 和上条数据一样)
(delete_2)1-0-2-2 # 被跳过(DELETE)
(base_1)1-0-2-1 # 被跳过(当前记录的 row_id(2) 和上条数据一样)
(delta_2)2-0-0-2
(delta_2)2-0-1-2
获取第一条记录;
如果当前记录的 row_id 和上条数据一样,则跳过;
如果当前记录的操作类型为 DELETE,也跳过;
通过以上两条规则,对于 1-0-1-2 和 1-0-1-1,这条记录会被跳过;
如果没有跳过,记录将被输出给下游;
重复以上过程。
合并过程是流式的,即 Hive 会将所有文件打开,预读第一条记录,并将 row_id 信息存入到 ReaderKey 类型中。
三、ChunJun读写Hive事务表实战
了解完Hive事务表的基本原理后,我们来为大家分享如何在ChunJun中读写Hive事务表。
1、事务表数据准备
-- 创建事务表
create table dtstack(
id int,
name string,
age int
)
stored as orc
TBLPROPERTIES('transactional'='true');
-- 插入 10 条测试数据
insert into dtstack (id, name, age)
values (1, "aa", 11), (2, "bb", 12), (3, "cc", 13), (4, "dd", 14), (5, "ee", 15),
(6, "ff", 16), (7, "gg", 17), (8, "hh", 18), (9, "ii", 19), (10, "jj", 20);
2、配置 ChunJun json 脚本
3、提交任务(读写事务表)
启动 Session
/root/wujuan/flink-1.12.7/bin/yarn-session.sh -t $ChunJun_HOME -d
提交 Yarn Session 任务
读取事务表
/root/wujuan/ChunJun/bin/ChunJun-yarn-session.sh -job /root/wujuan/ChunJun/ChunJun-examples/json/hive3/hive3_transaction_stream.json -confProp {\"yarn.application.id\":\"application_1650792512832_0134\"}
写入事务表
/root/wujuan/ChunJun/bin/ChunJun-yarn-session.sh -job /root/wujuan/ChunJun/ChunJun-examples/json/hive3/stream_hive3_transaction.json -confProp {\"yarn.application.id\":\"application_1650792512832_0134\"}
根据上一行结果替换 yarn.application.id
三、ChunJun 读写Hive事务表源码分析
压缩器是在 Metastore 境内运行的一组后台程序,用于支持 ACID 系统。它由 Initiator、 Worker、 Cleaner、 AcidHouseKeeperService 和其他一些组成。
1、Compactor
● Delta File Compaction
在不断的对表修改中,会创建越来越多的delta文件,需要这些文件需要被压缩以保证性能。有两种类型的压缩,即(minor)小压缩和(major)大压缩:
minor 需要一组现有的delta文件,并将它们重写为每个桶的一个delta文件
major 需要一个或多个delta文件和桶的基础文件,并将它们改写成每个桶的新基础文件。major 需要更久,但是效果更好
所有的压缩工作都是在后台进行的,并不妨碍对数据的并发读写。在压缩之后系统会等待,直到所有旧文件的读都结束,然后删除旧文件。
●Initiator
这个模块负责发现哪些表或分区要进行压缩。这应该在元存储中使用hive.compactor.initiator.on来启用。 每个 Compact 任务处理一个分区(如果表是未分区的,则处理整个表)。如果某个分区的连续压实失败次数超过 hive.compactor.initiator.failed.compacts.threshold,这个分区的自动压缩调度将停止。
● Worker
每个Worker处理一个压缩任务。 一个压缩是一个MapReduce作业,其名称为以下形式。-compactor-..。 每个Worker将作业提交给集群(如果定义了hive.compactor.job.queue),并等待作业完成。hive.compactor.worker.threads决定了每个Metastore中Worker的数量。 Hive仓库中的Worker总数决定了并发压缩的最大数量。
● Cleaner
这个进程是在压缩后,在确定不再需要delta文件后,将其删除。
● AcidHouseKeeperService
这个进程寻找那些在hive.txn.timeout时间内没有心跳的事务并中止它们。系统假定发起交易的客户端停止心跳后崩溃了,它锁定的资源应该被释放。
● SHOW COMPACTIONS
该命令显示当前运行的压实和最近的压实历史(可配置保留期)的信息。这个历史显示从HIVE-12353开始可用。
● Compact 重点配置
2、如何 debug Hive
debug hive client
hive --debug
debug hive metastore
hive --service metastore --debug:port=8881,mainSuspend=y,childSuspend=n --hiveconf hive.root.logger=DEBUG,console
debug hive mr 任务
3、读写过滤和CompactorMR排序的关键代码
4、Minor&Major 合并源码(CompactorMR Map 类)
四、ChunJun 文件系统未来规划
最后为大家介绍ChunJun 文件系统未来规划:
● 基于 FLIP-27 优化文件系统
批流统一实现,简单的线程模型,分片和读数据分离。
● Hive 的分片优化
分片更精细化,粒度更细,充分发挥并发能力
● 完善 Exactly Once 语义
加强异常情况健壮性。
● HDFS 文件系统的断点续传
根据分区,文件个数,文件行数等确定端点位置,状态存储在 checkpoint 里面。
● 实时采集文件
实时监控目录下的多个追加文件。
● 文件系统格式的通用性
JSON、CSV、Text、XM、EXCELL 统一抽取公共包。
你可能感兴趣的:(大数据githubspring)
数据分析:低代码平台助力大数据时代的飞跃发展
快乐非自愿
数据分析 低代码 大数据
随着信息技术的突飞猛进,我们身处于一个数据量空前增长的时代——大数据时代。在这个时代背景下,数据分析已经成为企业决策、政策制定、科学研究等众多领域不可或缺的重要工具。然而,面对海量的数据和日益复杂多变的分析需求,传统的数据分析方法往往捉襟见肘,难以应对。幸运的是,低代码平台的兴起为大数据分析注入了新的活力,成为推动大数据时代发展的重要力量。低代码平台,顾名思义,是一种通过少量甚至无需编写代码,就能
Apache Kafka的伸缩性探究:实现高性能、弹性扩展的关键
i289292951
kafka kafka
引言ApacheKafka作为当今最流行的消息中间件之一,以其强大的伸缩性著称。在大数据处理、流处理和实时数据集成等领域,Kafka的伸缩性为其在面临急剧增长的数据流量和多样化业务需求时提供了无与伦比的扩展能力。本文将深入探讨Kafka如何通过其独特的架构设计实现高水平的伸缩性,以及在实际部署中如何优化和利用这一特性。一、Kafka伸缩性的核心设计分区(Partitioning)与水平扩展Kafk
山东省大数据局副局长禹金涛一行莅临聚合数据走访调研
聚合数据
API 大数据 人工智能 API
3月19日,山东省大数据局党组成员、副局长禹金涛莅临聚合数据展开考察调研。山东省大数据局数据应用管理与安全处处长杨峰,副处长都海明参加调研,苏州市大数据局副局长汤晶陪同。聚合数据董事长左磊等人接待来访。调研组一行参观了聚合数据展厅,了解了聚合数据的发展历程、数据产品、应用案例、奖项荣誉等情况。并就企业在数据处理和应用方面取得的成绩进行了深入交流。作为最早一批进入大数据行业的企业,聚合数据深耕行业十
智慧公厕的先进技术应用
中期科技ZONTREE
智慧厕所 智慧公厕 智慧城市
公共厕所一直以来都是城市管理中一个重要的工作,但设施老化、环境脏乱、服务质量低下等问题一直困扰着城市居民。然而,随着科技的进步和数字技术的应用,智慧公厕的建设正在改变这一现状。智慧公厕通过对所在辖区内所有公共厕所的全域感知、全网协同、全业务融合和全场景智慧的赋能,“千厕一云”的公共厕所云管理模式应运而生。智慧公厕的云端多屏管理,将各个公厕连接在一起,实现信息的共享和管理的集中化。通过大数据、云计算
【Hadoop】使用Scala与Spark连接ClickHouse进行数据处理
音乐学家方大刚
Scala Hadoop hadoop scala spark
风不懂不懂得叶的梦月不听不听闻窗里琴声意难穷水不见不曾见绿消红霜不知不知晓将别人怎道珍重落叶有风才敢做一个会飞的梦孤窗有月才敢登高在夜里从容桃花有水才怕身是客身是客此景不能久TieYann(铁阳)、薄彩生《不知晓》在大数据分析和处理领域,ApacheSpark是一个广泛使用的高性能、通用的计算框架,而ClickHouse作为一个高性能的列式数据库,特别适合在线分析处理(OLAP)。结合Scala语
一文详解大数据时代与低代码开发应用
快乐非自愿
大数据 低代码
随着信息技术的飞速发展,我们迎来了一个崭新的时代——大数据时代。在这个时代,数据成为了一种新的资源,大数据技术的应用成为了推动社会进步的关键力量。而在大数据技术的浪潮中,低代码开发应用也逐渐崭露头角,以其高效、灵活的特点,成为大数据时代的重要支撑。大数据时代的来临随着科技的飞速发展和互联网的广泛普及,我们迎来了一个被称为“大数据时代”的全新时代。这个时代,数据无处不在,无时不刻不在增长,其规模之大
Spark面试整理-Spark是什么?
不务正业的猿
面试 Spark spark 大数据 分布式
ApacheSpark是一个开源的分布式计算系统,它提供了一个用于大规模数据处理的快速、通用、易于使用的平台。它最初是在加州大学伯克利分校的AMPLab开发的,并于2010年开源。自那时起,Spark已经成为大数据处理中最受欢迎和广泛使用的框架之一。下面是Spark的一些关键特点:速度:Spark使用了先进的DAG(有向无环图)执行引擎,可以支持循环数据流和内存计算。这使得Spark在数据处理方面
请介绍一下大数据主要是干什么的?决策支持预测分析用户行为分析个性化服务操作优化风险管理创新与产品开发加拿大卡尔加里大学历史背景学术结构研究和创新校园设施
盛溪的猫猫
感悟 大数据 英语 加拿大
目录请介绍一下大数据主要是干什么的?决策支持预测分析用户行为分析个性化服务操作优化风险管理创新与产品开发加拿大卡尔加里大学历史背景学术结构研究和创新校园设施国际化学生生活大语言模型目前的问题卡尔加里经济地理和气候文化和活动教育交通绿色城市AVL树的旋转单右旋(LL旋转)单左旋(RR旋转)左右旋(LR旋转)右左旋(RL旋转)请介绍一下大数据主要是干什么的?大数据是一个涉及从极其庞大和复杂的数据集中提
GEE在灾害预警中的遥感云大数据应用及GPT模型辅助分析
AIzmjl
GPT 生态 遥感 大数据 gpt gee 灾害预警 水体湿地 遥感
随着遥感技术的快速发展,云大数据在灾害、水体与湿地领域的应用日益广泛。通过遥感云大数据,我们能够实时获取灾害发生地的影像信息,为灾害预警、应急响应提供有力支持。同时,在水体与湿地监测方面,遥感云大数据也发挥着重要作用,帮助我们了解水体的分布、变化以及湿地的生态状况。近年来,GPT模型在自然语言处理领域取得了显著成果,其强大的文本生成和理解能力为遥感云大数据的应用提供了新的可能。通过将GPT模型与遥
大数据毕设 图像识别-人脸识别与疲劳检测 - python opencv
fawubio_A
python 算法
文章目录0前言1课题背景2Dlib人脸识别2.1简介2.2Dlib优点2.3相关代码2.4人脸数据库2.5人脸录入加识别效果3疲劳检测算法3.1眼睛检测算法3.2打哈欠检测算法3.3点头检测算法4PyQt54.1简介4.2相关界面代码0前言这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师
大数据开发(Hive面试真题-卷二)
Key-Key
大数据 hive 面试
大数据开发(Hive面试真题)1、举几个Hive开窗函数例子?什么要有开窗函数,和聚集函数区别?2、说下Hive是什么?跟数据仓库区别?3、Hive架构?4、Hive数据倾斜以及解决方案?5、Hive如果不用参数调优,在map和reduce端应该做什么?6、Hive的三种自定义函数是什么?实现步骤与流程?它们之间的区别?作用是什么?7、Hive分区和分桶的区别?8、Hive的执行流程?9、Hive
【大数据面试题】014 Flink CDC 用过吗,请简要描述
Jiweilai1
一天一道面试题 flink 大数据 面试 flink cdc
一步一个脚印,一天一道面试题。FlinkCDC的诞生背景FlinkCDC的全称是ChangeDataCapture(变更数据捕获)每一项技术的诞生都是为了解决某个问题,某个痛点。而FlinkCDC的诞生就是为了解决在读取,监控MySQL这样的数据库时,不会因为读取数据库,对数据库本身造成压力,影响性能。同时,保证了数据源的准确,正确。FlinkCDC原理方式一:通过查询来获取更新的数据。如查询数据
【大数据】Flink SQL 语法篇(五):Regular Join、Interval Join
G皮T
# Flink SQL 大数据 flink sql Regular Join Interval Join 双流Join
《FlinkSQL语法篇》系列,共包含以下10篇文章:FlinkSQL语法篇(一):CREATEFlinkSQL语法篇(二):WITH、SELECT&WHERE、SELECTDISTINCTFlinkSQL语法篇(三):窗口聚合(TUMBLE、HOP、SESSION、CUMULATE)FlinkSQL语法篇(四):Group聚合、Over聚合FlinkSQL语法篇(五):RegularJoin、I
有一点动心
段duan
《有一点动心》是6月4日新上映的一部影片,在香山国际影城的支持下,与水姐观影群的伙伴们共同观看了这部影片。随着社会意识形态的不断变化,人们对感情的态度,也呈现出多元化的状态。爱情,自从人类诞生之日起,不论朝代如何更替变迁,都是生命的一大核心主题,演绎出无数个动人的故事,让经历者体验其中,让倾听者无比动容。从调查出来的大数据来看,适龄人群的不婚比例,是空前高的一个数字,越来越多的适婚人士,加入了不婚
大数据开发(Kafka面试真题-卷一)
Key-Key
大数据 kafka 面试
大数据开发(Kafka面试真题)1、请解释以下ApacheKafka是什么?它在大数据系统中的角色是什么?2、请解释以下Kafka的工作原理和它与传统消息队列服务的不同之处?3、解释以下ApacheKafka的作用以及它与常见消息队列系统(如RabbitMQ)之间的区别?4、如何使用ApacheKafka来实现实时数据流处理?5、Flinkcheckpoint和Kafkaoffset的关联是什么?
什么是分布式搜索引擎
罗彬桦
分布式搜索引擎 搜索引擎 分布式
什么是分布式搜索引擎搜索引擎所谓搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境。分布
挑战杯 大数据商城人流数据分析与可视化 - python 大数据分析
laafeer
python
0前言优质竞赛项目系列,今天要分享的是基于大数据的基站数据分析与可视化该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:3分更多资料,项目分享:https://gitee.com/dancheng-senior/postgraduate课题背景随着当今个人手机终端的普及,出行群体中手机拥有率和使用率已达到相当高的比例,手
Java开发从入门到精通(七):Java的面向对象编程OOP:常用API
HACKNOE
Java开发从入门到精通 java intellij-idea
Java大数据开发和安全开发(一)Java的常用API1.1Object类1.1toString1.1equals方法1.1对象克隆clone1.1Objects类1.1包装类1.1StringBuilder1.1StringBuffer1.1StringJoiner1.1Math、System、Runtime1.1BigDecimal1.1传统时间:Date日期类、SimpleDateForma
linux安装单机版spark3.5.0
爱上雪茄
大数据 JAVA知识 spark 大数据 分布式
一、spark介绍是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等.Spark主要用于大数据的计算二、spark下载spark3.5.0三、spark环境变量配置exportJAVA_HOME=/usr/local/jdk1.8.0_391exportJRE_HOME=/usr/local/jdk1.8.0_391/jr
Hadoop简介
程序员小郭同学
hadoop
简介大数据简介概述大数据的说法从出现到现在,也经历了十多年时间的发展。而在这十几年的发展过程中,非常多的机构、组织都试图对大数据做出过定义,例如:研究机构Gartner给出了这样的定义:"大数据"是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。再例如根据维基百科的定义,大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。
数大数据时代的关键:融合数据治理与AI为企业增值_光点科技
光点数据治理
人工智能 大数据 科技
在数据驱动的今天,企业不能再将数据治理和人工智能(AI)视作孤立的实体。它们之间的协同作用已经成为推动企业增长的强大引擎。本文将探索数据治理与AI如何相互作用,形成闭环,以及企业如何利用这一关系来提升数据价值,实现数字化转型。数据治理与AI的依存共生数据治理是整理和优化数据的过程,以确保其质量、安全性和可用性。而AI,尤其是大模型,是解析和应用这些数据的工具。没有高质量的数据治理,AI无法发挥其最
2024年阿里云大数据acp认证条件
腾科教育
阿里云 大数据 云计算
阿里云大数据acp认证考试没有条件,在校大学生、应届毕业生、在职员工均可报考。acp认证考试预约流程1.账户注册,认证人员登录阿里云认证全球培训中心网站,在页面右上角点击“立即注册”2.选择专业。账户注册成功会自动返回到网站首页,认证人员根据实际需要进行报考,3,认证购买。进入专业介绍页后点击“购买认证"跳转到认证购买页,点击对应专业认证名称再点击“立即购买”,确认订单后完成支付即可。4.考试预约
Redis 的 RDB 和 AOF
龙大.
Redis redis 数据库
1.RDB(RedisDatabase)定义:RDB是Redis的持久化机制之一,它会在指定的时间间隔内生成数据集的时间点快照。工作原理:当RDB持久化被触发时,Redis会创建一个子进程来执行实际的数据保存工作,父进程则继续处理客户端请求。子进程将内存中的数据写入到一个临时RDB文件中,完成后替换旧的RDB文件。优点:快速恢复大数据集。子进程创建的方式减少了主进程的内存消耗。RDB文件是一个紧凑
挑战杯 机器学习股票大数据量化分析与预测系统 - python 挑战杯
laafeer
python
文章目录0前言1课题背景2实现效果UI界面设计web预测界面RSRS选股界面3软件架构4工具介绍Flask框架MySQL数据库LSTM5最后0前言优质竞赛项目系列,今天要分享的是机器学习股票大数据量化分析与预测系统该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:3分更多资料,项目分享:https://gitee.com
03hive数仓安装与基础使用
daydayup9527
hadoop_hive 运维 hadoop
hiveHive概述Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,本质上还是一个文件底层是将sql语句转换为MapReduce任务进行运行本质上是一种大数据离线分析工具学习成本相当低,不用开发复杂的mapreduce应用,十分适合数据仓库的统计分析hive可以用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop
Spark的数据结构——RDD
bluedraam_pp
Spark spark 数据结构 大数据
RDD的5个特征下面来说一下RDD这东西,它是ResilientDistributedDatasets的简写。咱们来看看RDD在源码的解释。Alistofpartitions:在大数据领域,大数据都是分割成若干个部分,放到多个服务器上,这样就能做到多线程的处理数据,这对处理大数据量是非常重要的。分区意味着,可以使用多个线程了处理。Afunctionforcomputingeachsplit:作用在
Hbase集群搭建超详细教程
笑看风云路
集群搭建系列 hbase hbase hadoop 大数据
Hbase集群搭建前言详细步骤1、下载安装包2、解压3、修改配置文件3.1修改hbase-env.sh文件3.2修改hbase-site.xml3.3修改regionservers文件4、分发hbase目录5、启动HBase集群6、查看HBaseWebUI大家好,我是风云,欢迎大家关注我的博客,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己!前言HBase是一个开源的、
flink重温笔记(十五): flinkSQL 顶层 API ——实时数据流转化为SQL表的操作
那就学有所成吧(˵¯͒¯͒˵)
Flink重温笔记 flink 笔记 sql 大数据 学习方法 数据库 KAFKA
Flink学习笔记前言:今天是学习flink的第15天啦!学习了flinkSQL基础入门,主要是解决大数据领域数据处理采用表的方式,而不是写复杂代码逻辑,学会了如何初始化环境,鹅湖将流数据转化为表数据,以及如何查询表数据,结合自己实验猜想和代码实践,总结了很多自己的理解和想法,希望和大家多多交流!Tips:"分享是快乐的源泉,在我的博客里,不仅有知识的海洋,还有满满的正能量加持,快来和我一起分享这
大数据开发(Spark面试真题-卷一)
Key-Key
大数据 spark 面试
大数据开发(Spark面试真题)1、什么是SparkStreaming?简要描述其工作原理。2、什么是Spark内存管理机制?请解释其中的主要概念,并说明其作用。3、请解释一下Spark中的shuffle是什么,以及为什么shuffle操作开销较大?4、请解释一下Spark中的RDD持久化(Caching)是什么以及为什么要使用持久化?5、请解释一下Spark中ResilientDistribut
基于HBase和Spark构建企业级数据处理平台
weixin_34071713
大数据 数据库 爬虫
摘要:在中国HBase技术社区第十届Meetup杭州站上,阿里云数据库技术专家李伟为大家分享了如何基于当下流行的HBase和Spark体系构建企业级数据处理平台,并且针对于一些具体落地场景进行了介绍。演讲嘉宾简介:李伟(花名:沐远),阿里云数据库技术专家。专注于大数据分布式计算和数据库领域,具有6年分布式开发经验,先后研发Spark及自主研发内存计算,目前为广大公有云用户提供专业的云HBase数据
Spring的注解积累
yijiesuifeng
spring 注解
用注解来向Spring容器注册Bean。
需要在applicationContext.xml中注册:
<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>。
如:在base-package指明一个包
<context:component-sc
传感器
百合不是茶
android 传感器
android传感器的作用主要就是来获取数据,根据得到的数据来触发某种事件
下面就以重力传感器为例;
1,在onCreate中获得传感器服务
private SensorManager sm;// 获得系统的服务
private Sensor sensor;// 创建传感器实例
@Override
protected void
[光磁与探测]金吕玉衣的意义
comsci
这是一个古代人的秘密:现在告诉大家
信不信由你们:
穿上金律玉衣的人,如果处于灵魂出窍的状态,可以飞到宇宙中去看星星
这就是为什么古代
精简的反序打印某个数
沐刃青蛟
打印
以前看到一些让求反序打印某个数的程序。
比如:输入123,输出321。
记得以前是告诉你是几位数的,当时就抓耳挠腮,完全没有思路。
似乎最后是用到%和/方法解决的。
而今突然想到一个简短的方法,就可以实现任意位数的反序打印(但是如果是首位数或者尾位数为0时就没有打印出来了)
代码如下:
long num, num1=0;
PHP:6种方法获取文件的扩展名
IT独行者
PHP 扩展名
PHP:6种方法获取文件的扩展名
1、字符串查找和截取的方法
1
$extension
=
substr
(
strrchr
(
$file
,
'.'
), 1);
2、字符串查找和截取的方法二
1
$extension
=
substr
面试111
文强chu
面试
1事务隔离级别有那些 ,事务特性是什么(问到一次)
2 spring aop 如何管理事务的,如何实现的。动态代理如何实现,jdk怎么实现动态代理的,ioc是怎么实现的,spring是单例还是多例,有那些初始化bean的方式,各有什么区别(经常问)
3 struts默认提供了那些拦截器 (一次)
4 过滤器和拦截器的区别 (频率也挺高)
5 final,finally final
XML的四种解析方式
小桔子
dom jdom dom4j sax
在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为)。 预 备 测试环境: AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server
wordpress中常见的操作
aichenglong
中文注册 wordpress 移除菜单
1 wordpress中使用中文名注册解决办法
1)使用插件
2)修改wp源代码
进入到wp-include/formatting.php文件中找到
function sanitize_user( $username, $strict = false
小飞飞学管理-1
alafqq
管理
项目管理的下午题,其实就在提出问题(挑刺),分析问题,解决问题。
今天我随意看下10年上半年的第一题。主要就是项目经理的提拨和培养。
结合我自己经历写下心得
对于公司选拔和培养项目经理的制度有什么毛病呢?
1,公司考察,选拔项目经理,只关注技术能力,而很少或没有关注管理方面的经验,能力。
2,公司对项目经理缺乏必要的项目管理知识和技能方面的培训。
3,公司对项目经理的工作缺乏进行指
IO输入输出部分探讨
百合不是茶
IO
//文件处理 在处理文件输入输出时要引入java.IO这个包;
/*
1,运用File类对文件目录和属性进行操作
2,理解流,理解输入输出流的概念
3,使用字节/符流对文件进行读/写操作
4,了解标准的I/O
5,了解对象序列化
*/
//1,运用File类对文件目录和属性进行操作
//在工程中线创建一个text.txt
getElementById的用法
bijian1013
element
getElementById是通过Id来设置/返回HTML标签的属性及调用其事件与方法。用这个方法基本上可以控制页面所有标签,条件很简单,就是给每个标签分配一个ID号。
返回具有指定ID属性值的第一个对象的一个引用。
语法:
&n
励志经典语录
bijian1013
励志 人生
经典语录1:
哈佛有一个著名的理论:人的差别在于业余时间,而一个人的命运决定于晚上8点到10点之间。每晚抽出2个小时的时间用来阅读、进修、思考或参加有意的演讲、讨论,你会发现,你的人生正在发生改变,坚持数年之后,成功会向你招手。不要每天抱着QQ/MSN/游戏/电影/肥皂剧……奋斗到12点都舍不得休息,看就看一些励志的影视或者文章,不要当作消遣;学会思考人生,学会感悟人生
[MongoDB学习笔记三]MongoDB分片
bit1129
mongodb
MongoDB的副本集(Replica Set)一方面解决了数据的备份和数据的可靠性问题,另一方面也提升了数据的读写性能。MongoDB分片(Sharding)则解决了数据的扩容问题,MongoDB作为云计算时代的分布式数据库,大容量数据存储,高效并发的数据存取,自动容错等是MongoDB的关键指标。
本篇介绍MongoDB的切片(Sharding)
1.何时需要分片
&nbs
【Spark八十三】BlockManager在Spark中的使用场景
bit1129
manager
1. Broadcast变量的存储,在HttpBroadcast类中可以知道
2. RDD通过CacheManager存储RDD中的数据,CacheManager也是通过BlockManager进行存储的
3. ShuffleMapTask得到的结果数据,是通过FileShuffleBlockManager进行管理的,而FileShuffleBlockManager最终也是使用BlockMan
yum方式部署zabbix
ronin47
yum方式部署zabbix
安装网络yum库#rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 通过yum装mysql和zabbix调用的插件还有agent代理#yum install zabbix-server-mysql zabbix-web-mysql mysql-
Hibernate4和MySQL5.5自动创建表失败问题解决方法
byalias
J2EE Hibernate4
今天初学Hibernate4,了解了使用Hibernate的过程。大体分为4个步骤:
①创建hibernate.cfg.xml文件
②创建持久化对象
③创建*.hbm.xml映射文件
④编写hibernate相应代码
在第四步中,进行了单元测试,测试预期结果是hibernate自动帮助在数据库中创建数据表,结果JUnit单元测试没有问题,在控制台打印了创建数据表的SQL语句,但在数据库中
Netty源码学习-FrameDecoder
bylijinnan
java netty
Netty 3.x的user guide里FrameDecoder的例子,有几个疑问:
1.文档说:FrameDecoder calls decode method with an internally maintained cumulative buffer whenever new data is received.
为什么每次有新数据到达时,都会调用decode方法?
2.Dec
SQL行列转换方法
chicony
行列转换
create table tb(终端名称 varchar(10) , CEI分值 varchar(10) , 终端数量 int)
insert into tb values('三星' , '0-5' , 74)
insert into tb values('三星' , '10-15' , 83)
insert into tb values('苹果' , '0-5' , 93)
中文编码测试
ctrain
编码
循环打印转换编码
String[] codes = {
"iso-8859-1",
"utf-8",
"gbk",
"unicode"
};
for (int i = 0; i < codes.length; i++) {
for (int j
hive 客户端查询报堆内存溢出解决方法
daizj
hive 堆内存溢出
hive> select * from t_test where ds=20150323 limit 2;
OK
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
问题原因: hive堆内存默认为256M
这个问题的解决方法为:
修改/us
人有多大懒,才有多大闲 (评论『卓有成效的程序员』)
dcj3sjt126com
程序员
卓有成效的程序员给我的震撼很大,程序员作为特殊的群体,有的人可以这么懒, 懒到事情都交给机器去做 ,而有的人又可以那么勤奋,每天都孜孜不倦得做着重复单调的工作。
在看这本书之前,我属于勤奋的人,而看完这本书以后,我要努力变成懒惰的人。
不要在去庞大的开始菜单里面一项一项搜索自己的应用程序,也不要在自己的桌面上放置眼花缭乱的快捷图标
Eclipse简单有用的配置
dcj3sjt126com
eclipse
1、显示行号 Window -- Prefences -- General -- Editors -- Text Editors -- show line numbers
2、代码提示字符 Window ->Perferences,并依次展开 Java -> Editor -> Content Assist,最下面一栏 auto-Activation
在tomcat上面安装solr4.8.0全过程
eksliang
Solr solr4.0后的版本安装 solr4.8.0安装
转载请出自出处:
http://eksliang.iteye.com/blog/2096478
首先solr是一个基于java的web的应用,所以安装solr之前必须先安装JDK和tomcat,我这里就先省略安装tomcat和jdk了
第一步:当然是下载去官网上下载最新的solr版本,下载地址
Android APP通用型拒绝服务、漏洞分析报告
gg163
漏洞 android APP 分析
点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞,移动安全团队爱内测(ineice.com)发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧。
0xr0ot和Xbalien交流所有可能导致应用拒绝服务的异常类型时,发现了一处通用的本地拒绝服务漏洞。该通用型本地拒绝服务可以造成大面积的app拒绝服务。
针对序列化对象而出现的拒绝服务主要
HoverTree项目已经实现分层
hvt
编程 .net Web C# ASP.ENT
HoverTree项目已经初步实现分层,源代码已经上传到 http://hovertree.codeplex.com请到SOURCE CODE查看。在本地用SQL Server 2008 数据库测试成功。数据库和表请参考:http://keleyi.com/a/bjae/ue6stb42.htmHoverTree是一个ASP.NET 开源项目,希望对你学习ASP.NET或者C#语言有帮助,如果你对
Google Maps API v3: Remove Markers 移除标记
天梯梦
google maps api
Simply do the following:
I. Declare a global variable:
var markersArray = [];
II. Define a function:
function clearOverlays() {
for (var i = 0; i < markersArray.length; i++ )
jQuery选择器总结
lq38366
jquery 选择器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
基础数据结构和算法六:Quick sort
sunwinner
Algorithm Quicksort
Quick sort is probably used more widely than any other. It is popular because it is not difficult to implement, works well for a variety of different kinds of input data, and is substantially faster t
如何让Flash不遮挡HTML div元素的技巧_HTML/Xhtml_网页制作
刘星宇
html Web
今天在写一个flash广告代码的时候,因为flash自带的链接,容易被当成弹出广告,所以做了一个div层放到flash上面,这样链接都是a触发的不会被拦截,但发现flash一直处于div层上面,原来flash需要加个参数才可以。
让flash置于DIV层之下的方法,让flash不挡住飘浮层或下拉菜单,让Flash不档住浮动对象或层的关键参数:wmode=opaque。
方法如下:
Mybatis实用Mapper SQL汇总示例
wdmcygah
sql mysql mybatis 实用
Mybatis作为一个非常好用的持久层框架,相关资料真的是少得可怜,所幸的是官方文档还算详细。本博文主要列举一些个人感觉比较常用的场景及相应的Mapper SQL写法,希望能够对大家有所帮助。
不少持久层框架对动态SQL的支持不足,在SQL需要动态拼接时非常苦恼,而Mybatis很好地解决了这个问题,算是框架的一大亮点。对于常见的场景,例如:批量插入/更新/删除,模糊查询,多条件查询,联表查询,