自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 问答 (2)
  • 收藏
  • 关注

原创 基于ClickHouse的近实时数据更新方案

众所周知,主攻OLAP场景的数据库引擎一般都会采用某种列式存储格式,以支撑其强大的数据处理性能,当无法同时兼顾行级事务,以及频繁的数据实时更新操作。如ROLAP中的Hive、Impala、Presto、ClickHouse,以及MOLAP中的Druid、Kylin,等等。

2022-11-07 15:21:08 5328 1

原创 Java Nested Class(嵌套类)和Inner Class(内部类)

最近在阅读《Java核心技术-卷I开发基础(原书12版)》第6.3章时, 感觉书中对于Java的内部类(inner class)以及嵌套类(nested class)的定义不够清晰和严谨, 其中静态内部类(static inner class)的定义, 又与内部类本身部分特性的描述产生冲突, 感觉难以理解并且无法自洽, 故而在网上冲浪过程中搜寻与Java内部类更为严谨可靠的定义和分类.

2022-10-07 16:21:58 2065

原创 Java字符串字面量是何时进入到字符串常量池中的

前言本文主要用于记录和分享一下博主在解决如题问题时,从各种途径所查询到的个人认为比较可信的相关资料,以及他人或个人得出的一些结论。如果参考资料或者所得结论存在错误,欢迎批评指正。注意:本文中提及到的概念,均建立在使用HotSpot VM的基础上,在其他Java虚拟机中并不一定适用。Q&AQ1:什么是字符串常量池字符串常量池,即String Constant Pool,又叫做String Pool,String Table。顾名思义,即用于存放字符串常量的运行时内存结构,其底层实现为一种

2020-07-05 23:22:56 3131 5

原创 Hive之配置和使用LZO压缩

前言OS:CentOS 7Hive:2.3.0Hadoop:2.7.7MySQL Server:5.7.10Hive官方手册:LanguageManual LZO在配置Hive使用lzo压缩功能之前,需要保证Hadoop集群中lzo依赖库的正确安装,以及hadoop-lzo依赖的正确配置,可以参考:Hadoop配置lzo压缩温馨提示:Hive自定义组件打包时,不要同时打包依赖,避免各种版本冲突,只将额外的依赖添加到classpath中即可配置过程一、配置H

2020-06-21 22:40:24 3749 1

原创 Hive之中文乱码问题

前言Hive:2.3.0Hadoop:2.7.7MySQL Server:5.7.10OS:CentOS 7本文主要演示如何解决Hive注释内容(即COMMENT)中出现中文乱码的问题原因Hive中的表字段等注释信息都存储在元数据库metastore中(本文中的元数据存储在MySQL的hive_db数据库中),当使用desc命令查看表字段的注释信息时,Hive会直接读取元数据库中的hive_db.COLUMNS_V2表,同样的修改元数据库中此表中的内容会直接反馈到desc的查询结果中。故

2020-06-13 17:21:50 1243

原创 MySQL之实现免密登录(设置默认登录用户及密码)

前言MySQL版本:5.7.10本文介绍的免密登录方式的原理就是在配置文件中设置mysql客户端命令行工具的默认参数,实现登录时可以直接使用设置参数进行登录,相当于设置了默认登录用户,并且只在修改了配置文件的主机上使用MySQL客户端登录时才有效查看配置配置文件生效顺序使用mysql --help命令可以输出mysql命令行工具的使用帮助手册,其中Default options are read from the following files in the given order:字样的后续

2020-06-13 11:13:41 2866 2

原创 Linux之下载lz4压缩工具

方法一:使用apt工具直接下载apt-get -y install liblz4-tool方法二:使用yum工具直接下载yum -y install lz4 lz4-devel方法三:编译源码https://github.com/lz4/lz4/End~

2020-06-12 11:02:20 6830

原创 CentOS修改yum工具安装源

前言OS:CentOS 7本文主要演示在CentOS 7中如何修改yum软件源为国内下载源,提高yum下载速度参考博客:https://www.cnblogs.com/Dleo/p/5758350.html具体步骤1)备份原始yum配置cd /etc/yum.repos.d# 备份原始仓库配置文件mv CentOS-Base.repo CentOS-Base.repo-backup# 下载阿里云yum仓库配置文件,并保存为原始yum仓库配置文件名wget -O /etc

2020-06-12 08:53:19 223

原创 Hadoop配置lzo压缩

前言OS:CentOS 7hadoop:2.7.7lzo:lzo-2.10Apache Maven:3.6.0JDK:1.8.0_221hadoop-lzo是一个围绕lzo压缩算法实现的Maven项目,基于hadoop提供的API实现了lzo压缩算法的编解码器,以及其他的一些自定义hadoop组件,本文主要演示如何编译此Git项目,并配置到hadoop集群中,实现lzo算法在集群中的使用由于Hadoop和hadoop-lzo中目前都未集成lzo算法函数库,因此在编译hadoop-lzo项目之

2020-06-11 19:57:12 1330 2

原创 Linux之配置lzo压缩

前言OS:CentOS 7lzo:lzo-2.10make:4.1PS: 如果未安装make,则可以执行sudo yum -y groupinstall "Development Tools"或sudo apt-get -y install build-essential来安装Linux环境下基本开发编译工具包,其中就包含了gcc、g++、make等基本开发工具安装步骤一、下载LZO源码官网地址lzo-2.10 下载地址二、编译LZO源码1)解压源码压缩

2020-06-11 19:54:54 1374

原创 Ubuntu修改apt工具安装源

前言OS:Ubuntu 18.04.4本文主要演示如何设置apt的软件包下载源地址。由于Ubuntu默认的apt软件包源地址在国外,下载速度太慢,所以建议更改源地址参考博客:Ubuntu更新软件源具体步骤1)备份原始apt配置文件cp /etc/apt/sources.list /etc/apt/sources.list.backup2)清空原始配置文件,添加软件包源地址echo "" > /etc/apt/sources.list例如:设置阿里镜像下载源#添加阿里源d

2020-06-11 19:53:49 1117

原创 YARN之配置Timeline服务

前言hadoop:2.7.7Timeline Service 官方文档简介Timeline Server基于YARN运行,能够存储和检索应用程序的当前和历史信息,其主要有两个职责:1)存储应用程序的特定信息收集和检索指定应用程序或者框架的某些信息。例如,Hadoop的MR框架会产生像是Map task数量、Reduce task数量、Counter等信息,应用开发人员可以通过TimelineClient,在Application Master或者Container中将特定的信息发送到Tim

2020-06-08 11:39:25 5446

原创 YARN和MapReduce内存分配计算公式

前言hadoop:2.7.7本文内容均来自:HDP Command Line Installation 2.6.5 中第1.10节HDP(Hortonworks Data Platform)是最常见的Hadoop的第三方发行版之一,类似的Hadoop发行版还有CDH、MapR等计算YARN和MapReduce的内存需求在Hadoop集群中,YARN管理着集群中的每个节点上的可用资源,并为运行在集群中的应用程序(如MapReduce)提供需要的资源,其中Container是YARN中最小的资源

2020-06-08 11:36:16 2543 1

原创 Hive中使用count(1)或count()统计行数时结果为0的原因

前言Hive:2.3.0Hadoop:2.7.7JDK:1.8.0_221原因因为执行count(1)或count(*)统计行数时,默认会从Hive的元数据库中查询 rowsNum 对应值作为结果返回,一般情况下,如果是使用加载数据文件load data的方式填充表数据,则不会收集此统计信息,Hive收集的统计信息与收集时机见官方文档。解决方案:方案一:使用ANALYZE命令手动更新表统计信息,如:ANALYZE TABLE Table1 COMPUTE STATISTICS;

2020-06-04 23:31:22 4497

原创 Hive中配置Apache Tez运行MR

前言Hive:2.3.0Hadoop:2.7.7JDK:1.8.0_221Tez:0.9.1本次配置Apache Tez只是用于Hive执行MR任务,而非Hadoop全局配置,并且使用的是已编译二进制压缩包Hadoop-Tez兼容性:Apache Tez 0.9.0中使用了部分Hadoop 2.7.0开发包,因此如果Hadoop是2.7.x版本,建议使用0.9.0及更新版本的Tez,避免发生兼容性问题。而对于Hadoop 2.6.x版本,官方建议使用Tez 0.8.3及更新版本的TezHiv

2020-06-04 23:30:50 1861 1

原创 Hive On Tez报错汇总

前言Hive:2.3.0Hadoop:2.7.7JDK:1.8.0_221Tez:0.9.1报错一报错内容:在Hive下使用Tez引擎执行MR Job时报错:Container killed on request. Exit code is 143问题分析:从Container killed on request这几个关键字就可以猜测,Container在非正常结束时被kill,很有可能就是Container使用的内存超出Container限制导致的。查看Hive运行日志:Hiv

2020-06-04 23:24:28 1557

原创 LeetCode 260.Single Number III(只出现一次的数 III)

题目LeetCode: 260. Single Number III力扣: 260. 只出现一次的数字 IIIGiven an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.给定一个整数数组 nums,其中恰好有两个元素只出

2020-06-01 21:42:49 178

原创 LeetCode 137.Single Number II(只出现一次的数 II)

题目LeetCode: 137. Single Number II力扣: 137. 只出现一次的数字 IIGiven a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。Note:Your

2020-06-01 21:41:54 541

原创 LeetCode 136.Single Number(只出现一次的数)

题目LeetCode: 136. Single Number力扣: 136. 只出现一次的数字Given a non-empty array of integers, every element appears twice except for one. Find that single one.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。Note:Your algorithm should have a linear runtime c

2020-06-01 21:40:07 180

原创 VScode、IDEA设置换行符

VScode设置换行符设置默认换行符VScode的参数设置作用域分为三类:用户、工作区、文件夹,后者设置会覆盖前者设置,每个作用域都有对应的配置文件。方法一:依次选择:文件——首选项——设置——文本编辑器——EOF,然后指定换行符方法二:或者直接搜索设置Files: Eol,然后指定换行符方法三:或者打开对应作用域的VScode配置json文件,手动修改files.eol的值为指定换行符,设置界面右上角能够打开当前设置作用域对应的json配置文件修改当前文件换行符在编辑器

2020-05-31 18:01:12 1743

原创 SQL求解TopK问题

前言本文主要用于记录TopK问题的一些简答的SQL解法。如果读者有更好的解法,或者觉得博主方法存在缺陷,欢迎在评论区交流。测试用表表结构:CREATE TABLE employees( `employee_id` int(6) NOT NULL auto_increment, -- '员工编号' `salary` double(10,2) DEFAULT NULL,-- '月薪' `department_id` int(6) DEFAULT NULL, -- '部门ID

2020-05-31 17:19:45 1378

原创 Hadoop源码解析之Mapper数量计算公式

前言据说,自0.20.0版本开始,Hadoop同时提供了新旧两套MapReduce API,并在后续版本中也同时支持这两种API的使用。新版本MR API在旧的基础进行了扩展,也制定了新的split计算方式。新版本MR API在包org.apache.hadoop.mapreduce及其子包中,而旧版本MR API则在包org.apache.hadoop.mapred及其子包中。本文主要从源码角度,简单谈谈新旧MR API中常用的FileInputFormat类(TextInputFormat的父类)

2020-05-29 23:08:28 348

原创 Hive统计连续登录n天的用户登录信息

前言Hadoop:2.7.7Hive:2.3.0本文主要练习如何使用Hive SQL统计练习登录n天的用户登录信息,主要使用窗口函数。测试用表表数据:1 Alise 2020-5-12 09:25:562 Alise 2020-5-13 10:25:303 Alise 2020-5-15 05:25:054 Alise 2020-5-15 15:23:115 Alise 2020-5-16 21:06:146 Bob 2020-5-12 11:17:487 Bob 2020-5

2020-05-29 21:17:09 1716

原创 Hive中distinct和group by去重性能对比

前言操作系统:CentOS 7hadoop:2.7.7hive:2.3.0实验目的:本文主要测试在某字段各种不同值个数情况下,记录对此字段其使用DISTINCT/GROUP BY去重的查询语句执行时间,对比两者在不同场景下的去重性能实验表格:表名记录数查询字段不同值个数DISTINCTGROUP BYtab_11000003tab_210000010000实验过程1)创建测试用表drop table if exists tab_1;

2020-05-29 11:34:39 621

原创 Hive之配置使用snappy压缩

前言操作系统:CentOS 7hadoop:2.7.7hive:2.3.0Hive中配置snappy压缩,可以分别在Mapper输出阶段和Reducer输出阶段使用压缩算法。也可以将压缩后数据文件加载到表中用于查询,Hive会通过后缀名自动识别对应的压缩格式,并在查询时进行解压,但需要保持数据文件和表格式相同,否则只会显示结果全为NULL查看本机目前可供Hadoop使用的压缩算法使用以下命令,可以查看是否有相应压缩算法的库,如果显示为false,则需要额外安装(CentOS

2020-05-28 22:34:49 2927 3

原创 Hive自定义表生成函数UDTF的自定义实现Demo

前言Hive:2.3.0由于实际生产环境中,Hive自带的内建函数无法覆盖所有的应用场景,所以时常需要进行自定义函数User-Defined Function(UDF),以满足实际生产需求。本文主要演示如何实现自定义表生成函数User-Defined Table-Generating Function(UDTF),此类函数的特点是一进多出创建Hive函数时,如果指定为临时的(temporary)则可以在所有数据库下使用,但只能在当前会话中使用,退出后自动删除;如果指定为持久的(per

2020-05-28 21:15:20 585

原创 MySQL中distinct和group by去重性能对比

前言MySQL:5.7.17存储引擎:InnoDB实验目的:本文主要测试在某字段有无索引、各种不同值个数情况下,记录对此字段其使用DISTINCT/GROUP BY去重的查询语句执行时间,对比两者在不同场景下的去重性能,实验过程中关闭MySQL查询缓存。实验表格:表名记录数查询字段有无索引查询字段不同值个数DISTINCTGROUP BYtab_1100000N3tab_2100000Y3tab_3100000N10000

2020-05-28 21:12:38 832

原创 通过类名查找Maven依赖

前言本文主要介绍两个网站,可以用于查找Maven依赖。这两个网站的优势在于,一个能够根据(全)类名查找Maven依赖,但提供的版本有限,另一个的优势在于能够根据关键字(如:groupId、artifactId)查找对应的Maven依赖且提供各个版本的jar包下载,种类十分齐全Maven依赖查找网站可以根据全类名查找https://search.maven.org种类齐全,支持关键字检索https://mvnrepository.com备用(界面简陋)https://find

2020-05-20 17:42:58 5204

原创 Hive2.3.0之入门级安装教程

前言Hadoop:2.7.7Hive:2.3.0MySQL:5.7.10JDK:1.8.0_221mysql-connector-java:5.1.38下载地址Apache软件归档分发目录Apache Hive1. Hive安装部署部署Hive的前提是保证Hadoop集群(或者standalone本地模式)已经安装并配置正确1)解压Hive到指定路径下tar -xz...

2020-05-07 09:47:45 740

原创 Linux之逻辑卷LV(挂载点)扩容教程

目录前言1. 创建分区而不进行格式化1.1 `lsblk`查看本系统内所有磁盘及其分区信息1.2 `parted`查看磁盘分区类型与分区信息1.3 根据磁盘分区表类型使用`fdisk/gdisk`工具创建分区1.4 更新Linux磁盘分区表信息1.5 删除分区2. 使用未格式化分区创建实体卷轴PV2.1 查看目前系统的PV状态2.2 使用未格式化分区创建PV2.3 再次查看文件系统的PV状态2.4...

2020-05-04 20:05:35 4675

原创 MySQL中各SQL子句的逻辑执行顺序

前言本文节选自《MySQL技术内幕:SQL编程》3.1 逻辑查询处理本文说明的执行顺序只是一种逻辑顺序,并不是MySQL中SQL查询语句的实际执行过程。MySQL在实际执行SQL语句时,由于MySQL Optimizer优化器的存在,会将SQL子句的执行顺序和过程朝着MySQL所认为的最优路径进行优化(实际上并不一定是最优)。要想确定SQL语句在MySQL的实际执行顺序,可以使用Explai...

2020-05-01 19:03:02 1065

原创 MyISAM和InnoDB的几点区别

InnoDB和MyISAM存储引擎的几点区别1. 事务InnoDB支持事务,默认情况下InnoDB会自动将对数据修改的单条SQL语句封装成事务,并进行进行自动提交;MyISAM不支持事务2. 索引组织方式InnoDB中索引默认的数据结构为B+Tree,且索引的组织方式为聚集索引,即表中的索引和具体的行数据存储在同一个文件中;MyISAM中索引默认的数据结构也为B+Tree,索引的组织...

2020-05-01 19:01:48 172

原创 MySQL中Explain关键字输出字段简介

前言本文中MySQL版本:5.7.10MySQL 5.7官方参考手册:EXPLAIN Output FormatExplain输出字段id列此列总是包含一个编号,可以简单理解为SELECT子句执行或者表的读取顺序,对于id号相同的查询按序从上到下执行,对于id号不同的查询按id号从大到小的顺序执行。id列的编号从1开始,若没有子查询SUBQUERY或者联合查询UNION,则Exp...

2020-05-01 17:15:43 397

原创 MySQL之常见的日志文件

前言日志文件记录了影响MySQL数据库的各种类型活动,这些日志文件可以帮助DBA对MySQL数据库的运行情况进行诊断,从而更好地进行数据库层面的优化。MySQL数据库中常见的日志文件有:错误日志(error log)二进制日志(binlog)慢查询日志(slow query log)查询日志(general log)1. 错误日志错误日志(error log)对MySQL的启动...

2020-04-30 10:14:17 374

原创 MySQL之常用的命令行工具

前言MySQL版本:5.7.17本次主要演示Linux上mysql命令行工具的使用,Windows上的使用方式大同小异MySQL常用命令行工具MySQL常用的命令行工具主要分为客户端命令行工具和服务器命令行工具两种,分别只能运行在mysql客户端和mysql服务器上,即mysql中的客户端命令行工具使用时需要设置登录选项,而服务器命令行工具可以在服务器上直接使用1. mysql客户...

2020-04-29 17:39:56 2384

原创 Linux之sudo与su命令切换root用户的区别

前言当 bash 是作为交互的登录 shell 启动的,或者是一个非交互的 shell 但是指定了 --login 选项,它首先读取并执行 /etc/profile 中的命令,只要那个文件存在。 读取那个文件之后,它以如下的顺序查找 ~/.bash_profile,~/.bash_login,和 ~/.profile,从存在并且可读的第一个文件中读取并执行其中的命令。(截取自bash使用手...

2020-04-29 12:37:33 984

原创 MySQL入门级安装教程

前言MySQL版本:5.7.17MySQL压缩包:mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz操作系统:CentOS-7-x86_64Windows上MySQL安装可直接使用Windows MSI Installer进行安装(安装参考教程)下载安装包社区版:下载地址Product Version:5.7.10Operat...

2020-04-28 09:13:58 272

原创 MySQL之慢查询日志使用入门教程

前言MySQL版本:5.7.17本文中只展示了部分MySQL命令示例,相关参数配置同样可以在MySQL配置文件中进行设置各平台各版本的MySQL操作方式也许各有不同,本文仅供参考,如果错误之处,欢迎指正1. 慢查询日志的功能及主要参数1.1 功能慢查询日志(slow query log)能够记录执行时间超过某阈值的SQL语句,且只记录成功执行的SQL语句。慢查询日志文件存储在My...

2020-04-25 18:32:28 232

原创 Flume之使用Kafka_Channel生产数据至Kafka_Topic

前言操作系统:CentOS 7Java版本:1.8.0_221Flume版本:1.8.01. Kafka Channel使用场景配合Flume Source、Flume Sink使用,为Event的传输提供一种具有高可用的Channel配合Flume Source和拦截器interceptor使用,无Sink,用于将Flume搜集的Event传输到Kafka集群指定Topic中...

2020-04-25 18:29:57 1415 1

原创 Flume之使用Kafka_Channel消费数据至HDFS

前言操作系统:CentOS 7Java版本:1.8.0_221Flume版本:1.8.01. Kafka Channel使用场景配合Flume Source、Flume Sink使用,为Event的传输提供一种具有高可用的Channel配合Flume Source和拦截器interceptor使用,无Sink,用于将Flume搜集的Event传输到Kafka集群指定Topic中...

2020-04-25 18:28:54 864

空空如也

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

TA关注的人

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