自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark的Parquet向量化读取原理

起因:测试过程中,发现一个spark的一个参数设置可以带来5倍以上的性能差异参数: spark.sql.parquet.enableVectorizedReaderSQL:SELECT * FROM ad_tetris_dw.ad_insight_record_hourly_test WHERE page_url = "www.chengzijianzhan.com/tetr...

2018-08-14 22:17:15 7462 3

原创 SQL 聚合查询

如果我们要统计一张表的数据量,例如,想查询students表一共有多少条记录,难道必须用SELECT * FROM students查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智。对于统计总数、平均数这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。 仍然以查询students表一共有多少条记录为例,我们可以使用SQL内置的COUNT...

2018-06-17 16:54:11 23442 1

原创 Hive UDF小结

HiveUDF简介:1)Hive中用于扩展HiveSQL功能的用户自定义函数称为HiveUDF 2)UDF又分为UDAF(用户自定义聚合函数),UDTF(用户自钉子表生成函数)Hive内置函数实际上Hive内置了很多函数,包括关系/算数/逻辑操作符都属于函数hive提供的build-in函数包括以下几类: 1. 关系操作符:包括 = 、 <> 、 <= 、...

2018-06-17 16:37:53 7380

转载 HiveServer2 源码分析

1.启动脚本HIVEHOME/bin/hive−−servicehiveserver2−−>HIVEHOME/bin/hive−−servicehiveserver2−−>HIVE_HOME/bin/hive --service hiveserver2 --> HIVE_HOME/bin/ ext/hiveserver2.sh –> 可以看到入口类和 org.apache...

2018-06-17 16:19:01 1185

转载 Hive CLI执行流程分析

1.启动脚本: $HIVE_HOME/bin/hive --> $HIVE_HOME/bin/ext/cli.sh 可以看到入口类org.apache.hadoop.hive.cli.CliDriver2.入口类:org.apache.hadoop.hive.cli.CliDriver(1) 参数解析OptionsProcessor( -f -hiveconf ...

2018-06-17 16:16:41 857

转载 Hive之COUNT DISTINCT优化

问题描述COUNT(DISTINCT xxx)在hive中很容易造成数据倾斜。针对这一情况,网上已有很多优化方法,这里不再赘述。 但有时,“数据倾斜”又几乎是必然的。我们来举个例子:假设表detail_sdk_session中记录了访问某网站M的客户端会话信息,即:如果用户A打开app客户端,则会产生一条会话信息记录在该表中,该表的粒度为“一次”会话,其中每次会话都记录了用户的唯一标示u...

2018-06-17 15:20:12 9832 1

转载 Hive中Join的原理和机制

笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。本文简单介绍一下两种join的原理和机制。Hive Common Join如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join. 整个过程包含Ma...

2018-06-17 15:11:45 310

转载 Yarn下Mapreduce的内存参数理解

简述Container就是一个yarn的java进程,在Mapreduce中的AM,MapTask,ReduceTask都作为Container在Yarn的框架上执行,你可以在RM的网页上看到Container的状态。Yarn的ResourceManger(简称RM)通过逻辑上的队列分配内存,CPU等资源给application。资源的分配数量由配置项和计算请求决定的。这里学习一下部分参数...

2018-06-17 15:06:02 1114

原创 Hive快问快答

最近工作中使用Hive,对于Hive的一些概念性知识,特别是一些Yes/No的问题,予以记录,不咎原理(有必要会另记下来),只求清晰,持续更新。Hive有索引吗?有Hive库表元信息存在哪?存在关系型数据库中,Hive通过JDBC和关系型数据库连接,默认使用derby数据库,存储于本地位置,可通过配置文件修改JDBC连接配置,从而改变和元数据存储位置。实际数据存在哪?存...

2018-05-19 12:07:19 225

原创 HDFS Quota浅析

简介HDFS支持Quota功能,我无意深入研究,简单总结:Hadoop提供两种配额(quota)模式,name quota和space quota。name quota限制路径的文件(含文件夹)数目,space quota限制的”磁盘”占用空间。可以通过此功能实现团队的存储使用管理。使用方法设置set HDFS name quotas:$ hadoop dfsadmin -...

2018-05-19 11:52:34 5405 2

原创 Shell脚本记录

Shell For循环类c语言for ((i=1; i<=100; i ++)) do echo $i done in使用for i in {1..100...2} do echo $i done2步一跳seq使用for i in `seq 1 100` do echo $i d...

2018-05-03 13:16:21 289

原创 一个命令行的实现示例

来自Alluxio源码/* * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0 * (the "License"). You may not use this work except in compliance with the License, which is *...

2018-05-03 11:44:34 658

转载 Python与HiveServer2连接

1.开启metastore和hiveserver2服务$hive --service metastore &$hive --service hiveserver2 &2.beeline调试,远程连接到HiveServer2$cd {HIVE_HOME}/bin$./beeline -u connect jdbc:hive2://localhost:10...

2018-05-02 14:07:15 3423

原创 Mac问题

安装Thrift问题configure: error: Bison version 2.5 or higher must be installed on the system! 解决方案:mac中默认安装了bison 2.3版本,并配置了路径在path中。安装最新的版本3.0.4, 并将/usr/bin中的bison删除,将bison 3.0.4 复制到/usr/bin中 cd /usr/...

2018-04-27 12:47:21 410

原创 OpenCV+Python环境搭建

因为毕设需求,我又要搞一波OpenCV了,之前做的也差不多忘光了,但犹记得被C++支配的恐惧,所以这次打算投入Python的怀抱了。安装真的超简单:pip install --upgrade setuptoolspip install numpy Matplotlibpip install opencv-python下载一会就搞定了。测试一下:#导入cv模块import cv2 as cv#

2017-12-10 14:59:49 492

转载 Java正则化

匹配验证-验证Email是否正确public static void main(String[] args) { // 要验证的字符串 String str = "[email protected]"; // 邮箱验证规则 String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a

2017-11-20 14:38:40 1036

原创 Python爬虫学习(一)——爬取新浪新闻

import requestsfrom bs4 import BeautifulSoupfrom datetime import datetimeimport reimport jsonimport pymysql#本示例通过爬取新浪中国的新闻来学习爬虫的基本操作#获取一则新闻详情的方法def getNewsDetail(newsurl): result = {} #使用

2017-10-26 20:55:39 4476 4

原创 SQL的JOIN以及ON/WHERE辨析

JOINInner Join内连接是最常见的一种连接,它也被称为普通连接,只连接匹配的行(仅对满足连接条件的交集中的列)。它又分为等值连接(连接条件运算符为”=”)和不等值连接(连接条件运算符不为”=”,例如between…and)。Outer JoinFull Outer JoinFULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据

2017-10-11 21:13:53 500

原创 Spark学习笔记(2)——RDD特性

RDD宽依赖,窄依赖:1)窄依赖指的是每一个parent RDD的Partition最多被子RDD的一个Partition使用 2)宽依赖指的是多个子RDD的Partition会依赖同一个parent RDD的PartitionRDD的弹性:1)自动的进行内存和磁盘的存储切换; 2)基于Lingage的高效容错; 3)task如果失败会自动进行特定次数的重试; 4)stage如果失败会自动进

2017-09-27 12:17:07 726

原创 MYSQL常用操作记录(草稿,仅供备忘)

仅做备忘修改密码方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql> set password for 用户名@localhost = password(‘新密码’); 例子:mysql> set password for root@localhost = password(‘123’); 方法2:用mysqladmin 格式:mysqladmin -u

2017-09-11 13:30:39 283

原创 互联网协议(6)——其他协议

遇到一个记一个:SNMPSNMP:(Simple Network Management Protocol)简单网络管理协议, 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。SN

2017-09-08 10:35:27 780

原创 数据库的锁,事务和事务隔离

数据库中的锁:锁的种类:按照锁的内容上分为:表锁,页锁,行锁。InnoDB支持行锁,MyIsam支持表锁,BerkeleyDBA支持页锁。不同的粒度 按照锁的性质分可以分为:共享锁(读锁或S锁),独占锁(写锁,排它锁)(X锁),更新锁(U锁)(意向锁)当执行select时候,加共享锁,当insert update delete等操作时,加排它锁。更新锁首先对数据对象作更新锁锁定,这样数据将不能被修

2017-09-03 16:11:00 520

转载 Java多线程(11)——线程池

http://www.importnew.com/19011.html在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolExecutor类中的方法讲起,然后再讲述它的实现原理,接着给出了它的使用示例,最后讨论了一下如何合理配置线程池的大小。以下是本文的目录大纲:一.Java中的ThreadPoolExecutor类二.深入剖析

2017-09-03 09:50:39 289

原创 Hadoop入门(3)——HA和Federation

除了官方文档之外强烈推荐http://www.cnblogs.com/tgzhu/p/5790565.html这位的博客。关系型数据库的类比HA和Federation都是HDFS发展过程的必然产物,对应于关系型数据库就是数据库的高可用和拆分。关系型数据库的高可用要解决的几个点就是: 1,单点故障问题——库分主备 一主一备,一主多备,互为主备多种解决方案 2,库分主备——主备一致性问题——主备同

2017-08-22 18:09:20 475

原创 Java多线程(10)——ThreadLocal

ThreadLocal是Java框架中经常使用的工具。对于这个知识点,网上博文毛毛多,但有不少都存在一些错误。不过知识就是这样不断建立,发现问题,打破重建螺旋上升的过程。在此记录一下我的认识过程:第一层级:初识ThreadLocal顾名思义,线程局部变量。因此ThreadLocal是线程独占而非处理多线程同步问题的。这在一些博文中有误解。ThreadLocal就是在使用该对象的没一个线程中创建独立的

2017-08-22 13:15:12 315

原创 Linux 问题解决拾遗

1, Ubuntu更换镜像源:vim /etc/apt/sources.list修改里面内容,例如换成阿里源:deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ trusty-security ...

2017-08-09 19:56:25 418

原创 Vim操作拾遗

VIMvim批量删除删除1到10行:1,10 d 删除全部G //到达文件底:1,.d 在vi中 ,“.”当前行 ,“1,.”表示从第一行到当前行 ,“d”删除VIM光标移动移到首行 gg移到尾行 G移到行首 o移到行尾 $移动到上一词 b移动到下一词 w翻页Ctrl-f 下翻Crtl-b 上翻...

2017-08-09 19:50:09 236

转载 Java多线程(9)——ConcurrentHashMap

简介ConcurrentHashMap是Java并发家族concurrent包中非常重要的一个类。JDK6,7中的ConcurrentHashmap主要使用Segment来实现减小锁粒度,把HashMap分割成若干个Segment,在put的时候需要锁住Segment,get时候不加锁,使用volatile来保证可见性,当要统计全局时(比如size),首先会尝试多次计算modcount来确

2017-08-02 11:40:10 466

原创 Docker:容器与虚拟化的理解

今天在微信公众号看到了一篇很好的文章【炸裂的云计算-01】虚拟化原理和分类。其中虚拟化的理解很有价值。再次算是记录一下读后感,或者说二次整理。容器和虚拟机每一个学习容器技术,比如Docker的人大概在入门的第一个小时就会接触到虚拟机和容器的差别。然后列举出容器的一系列优势:占用资源少,部署快,启动快。这里首先需要说句公道话,容器技术(以Docker为例)在获得了这些好处的同时,也丧失一些东西,比如容

2017-08-02 00:35:44 12891 1

原创 Java多线程(8)——锁实现和重入锁

锁实现基础Lock接口Lock接口是JDK1.5新加入的,它可以实现比synchronized更丰富灵活的功能,同时也更易用。在Lock接口基础上建立了重入锁,读写锁等一系列并发控制工具,因此Lock接口以及和它紧密相关的同步器是需要理解的概念。Lock接口定义如下方法:void lock() 获取锁void unlock() 释放锁void lockInterrup

2017-07-22 21:52:56 810

原创 HDFS-源码分析(2)——客户端和服务端

RPC通信的两端一端是Client——客户端,一端是Server——服务器,Client/Server的区分不在于机器的物理位置,而在于它们在通信中的逻辑地位。发起通信的是Client,接受信息的是Server。在HDFS中,存在着1,客户端-NameNode;2,客户端-DataNode;3,DataNode-NameNode;4,DataNode-DataNode 四种C/S结构通信,这里的客户

2017-07-20 21:31:58 847

原创 HDFS-源码分析(1)-序列化基础

HDFS-源码分析-RPC通信基础:序列化为了满足通信需求,需要对通信对象进行序列化。Hadoop使用了一套自己的序列化体系。org.apache.hadoop.io包中定义了很多可序列化对象。(顺便提及,io包中还包含压缩compress,纠删码erasurecoding,方法重试retry等功能模块)所有的可序列化对象均实现Writable接口:Writable接口

2017-07-20 21:30:01 472

转载 Java多线程(7)——ExecutorService 的理解与使用

接口 Java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。ExecutorService 样例这里有壹個简单的使用Java 实现的 Exector

2017-07-20 20:16:59 847

原创 Spark on Yarn配置Trouble shooting

Spark on Yarn配置和问题解决软件版本: Nmae Version hadoop 2.7.3 Scala 2.13.0 Spark 2.1.0非常遗憾的发现,尽管是官方文档也可能不靠谱,费了好大劲,终于把Spark on Yarn配置成功了。遇到的主要的坑是,修改yarn-site.xml配置导致NodeManager没有正常启动,以及Spark-submi

2017-07-18 17:15:07 942

原创 Hadoop Yarn Linux Container Executor配置

Yarn Linux Container Executor配置概述:Yarn支持两种容器实现方式,一种是yarn容器,一种是Linux容器,Linux容器较比Yarn容器具有更好的扩展性和隔离性。本文将讲述Linux容器的配置。需要配置的文件有三:$HADOOP_HOME/etc/hadoop/yarn-site.xml $HADOOP_HOME/etc/hadoop/container-ex

2017-07-04 11:31:09 6425 1

原创 JavaWeb(7)——Maven学习

开发过程中经常使用Maven,以为掌握了Maven,知道自己要写一个小项目,才意识根本不会maven。重新系统的学习Maven。Maven的基本概念Maven是一个方便程序员创建,配置,发布,部署项目的管理工具。约定优于配置Maven采用“约定优于配置”的策略(这一点最具代表性的是Ruby on Rails)。所谓约定由于配置,就是不需要对每一个文件写配置来说明彼此间的...

2017-07-02 21:22:09 241

原创 Protobuf和Java

Protobuf简介Protobuf是Google开源的二进制序列化数据协议。具有语言和平台无关性,支持多种语言接口。Protobuf的优点:1,通用性:多种语言支持 2,速度快:较比其他序列化格式如Json,XML编解码速度更快 3,小:因为是二进制格式,所以更小缺点:1,没有自描述性:因为是二进制,内容经过编码Protobuf语法Protobuf定义的数据格式类似于Java中的entity,

2017-06-30 20:53:02 483

原创 JSP(2)——7个动作指令

7个指令:jsp:forwardjsp:paramjsp:includejsp:pluginjsp:useBeanjsp:setPropertyjsp:getPropertyjsp:forward请求转发<jsp:forward page="relativeURL|<%=expression%>"/> <jsp:param .../>/jsp:forward><jsp:forw

2017-06-25 23:18:29 494

原创 JSP(1)

JSP基本概念JSP——通过Java实现的动态网页技术JSP——ServletJSP语法JSP语法:1,注释:<%--注释内容--%>2,声明<%! 声明部分%><%!public int count;public String speak(){ retutn "Hello world";}%>3,表达式输出<%=表达式%><%=count++%><%=speak()%>没有“;”4

2017-06-25 22:27:54 364

原创 Spark学习笔记(1)——Spark架构和主要特征

Spark是一个分布式内存计算框架。关键词:分布式,内存,计算。本文将从这三个关键词总结Spark第一周的学习内容。分布式所谓分布式就是网络中多个主机上可以同时协同工作。所有的分布式框架,无论用于存储还是计算,分布式是前提。分布式必然带来的命题有:节点,容器,通信,调度。几乎绝大部分分布式框架都是主从式结构。Spark中的“主”称为Master,“从”称为Worker,一“主”多“

2017-06-23 22:34:05 828

空空如也

空空如也

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

TA关注的人

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