- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 pq
PQ算法参考:https://blog.csdn.net/u013508213/article/details/72792803需要四个数据集,分别是:训练数据集 用来训练数据的中心点database数据集 用来给这个数据集建立向量索引查询数据集 用来查询ann的数据集算法过程训练数据集为:trainingset 8*16 8行 16维 ...
2018-04-01 22:25:27 851 1
原创 spark中的countminsketch
什么是countminsketch算法spark中的countminsketch代码示例:import org.apache.spark.util.sketch.CountMinSketchimport org.apache.spark.util.sketch.CountMinSketchImplobject countminsketch { def main(a...
2018-03-08 21:08:14 1236
原创 flume中的monitor
json方式配置启动生成数据显示:JMX方式配置启动打开jconsolehttp://flume.apache.org/FlumeUserGuide.html#monitoring如果没有监控器,那么flume采集了多少event,sink了多少event,都没法直接知道(可以统计日志,但是比较麻烦),如果使用flume的监控,就比较简单了。一共有4种Re...
2018-03-08 16:05:18 541
翻译 对比MPP计算框架和批处理计算框架
对比MPP计算框架和批处理计算框架标签(空格分隔): 翻译原文链接: https://content.pivotal.io/blog/apache-hawq-next-step-in-massively-parallel-processingMPP设计理念MPP最开始的设计目的是为了消除共享资源的使用,即每个executor有独立的cpu、内存和磁盘等资源,每个executor一般不能访问其他ex
2017-12-31 23:12:44 4881 1
原创 presto查询处理流程(queryexecution提交)
Query创建Query创建和QueryExecution提交通过调用SqlQueryManager的createQuery方法创建提交查询任务SqlQueueManager的submit方法分析1 队列选择2 判断是否有队列许可3 创建QuenedExecution4 开始执行查询总流程图: 1. Query创建statementResource在接收到查询请求后,会通过调用cr
2017-12-02 17:16:59 2296
原创 presto的QueryExecution的start方法
presto的QueryExecution的start方法标签(空格分隔): prestopresto的QueryExecution的start方法在queryExecution中start方法代码如下analyzeQuery方法分析planDistributionplan方法分析Task创建和提交1 在queryExecution中,start方法代码如下: public void
2017-12-02 17:10:00 1148
原创 presto查询处理流程(queryexecution提交)
Query创建Query创建和QueryExecution提交通过调用SqlQueryManager的createQuery方法创建提交查询任务SqlQueueManager的submit方法分析1 队列选择2 判断是否有队列许可3 创建QuenedExecution4 开始执行查询总流程图: 1. Query创建statementResource在接收到查询请求后,会通过调用cr
2017-12-02 17:05:49 1730
原创 sparkstreaming和kafka0.10版本整合
sparkstreaming和kafka0.10版本整合标签(空格分隔): 未分类sparkstreaming和kafka010版本整合Maven依赖创建directstreamLocationStrategiesConsumerStrategies创建RDD获取Offsets存储offset在checkpoint中存储在kafka中存储参考链接 sparkstreaming集
2017-11-07 18:48:29 2494 2
原创 kafka0.9
offset和consumer position消费者组和topic订阅例子手动控制offset提交在kafka外存储offset控制Consumers PositionConsumption Flow ControlMulti-threaded Processinghttp://kafka.apache.org/090/javadoc/index.html?org/apache/k
2017-11-06 18:18:04 839
原创 kafka 0.8 simple api使用
使用simple consumer为什么使用simple consumer使用simple consumer为什么使用simple consumer使用simpleconsumer的主要原因是用户想要得到比使用消费者组更好的分区消费的控制,例如用户想要:多次读取一个消息在进程中只读取一个topic的某些partition通过事务管理保证一条消息仅被处理一次使用simpleconsumer
2017-11-05 07:11:53 660
原创 ideallij调试spark源码的n中方法
该篇文章介绍多种在ideallij中单步调试spark源码的方法,以sparksql为例来进行说明方法一 直接通过app的方式进行单步调试本方法假设开发者已经搭建了spark在ideallij中的的运行环境,并且可以成功运行(注意,是ideallij中运行,而不是通过打jar包的方式运行)app源码package com.tencent.cubeli.spark
2017-11-04 15:14:43 1156
原创 一个关于kylin的疑惑
自从研究了kylin这个系统之后,就一直有一个疑惑,那就是kylin针对某一特定查询条件建立的cube,只能在这个条件下查询预计算的结果,如果条件一旦换了,cube就废了。带着这个疑问我在很多技术群里和别人讨论和争辩,都没有结果。看了很多网上分析的文章,都没有关于这个疑问的详细解答,于是今天自己试着写了一下cube,发现了一点点东西,总结一下,分享出来。问题Id Age Salary 1 2
2017-10-30 22:04:42 460
原创 kafka0.8 high-level consumer api使用
为什么使用high level api设计high level消费者https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example为什么使用high level api有时有些逻辑从kafka读取消息时不关心怎么处理消息的offset,只是想读数据。所以high level消费者抽象了大部分的消费细节。首先要明确的是
2017-10-24 23:29:26 1115
原创 kafka0.8消息处理逻辑
1- kafka消息处理入口1-1 MetadataKey1-2 OffsetsKey1-3 FetchKey1-4 UpdateMetadataKey1-5 LeaderAndIsrKey1- kafka消息处理入口KafkaApis/** * Top-level method that handles all requests and multiplexes to the rig
2017-10-22 19:26:50 768
原创 presto读取kafka数据
1-1-1 配置方法1-1-1 catalog配置1-1-2 schema配置1-2 启动和使用1-3 源码分析1-3-1 metadata1-3-2 任务切分1-3-3 数据读取1-今天分析一下presto的kafka connector的主要原理和源码1-1 配置方法1-1-1 catalog配置connector.name=kafkakafka.nodes=localhost
2017-10-22 10:35:00 6951
原创 sparkstreaming中通过kafka sample api实现directstream源码分析
1- 使用kafka simple api的步骤一般2- 源码分析2-1 计算offsets1- 使用kafka simple api的步骤一般Find an active Broker and find out which Broker is the leader for your topic and partitionDetermine who the replica Brokers
2017-10-01 04:42:49 438
原创 kafka的consumerConnector.createMessageStreams 方法源码分析
Consumer.create(consumerConfig) val topicMessageStreams = consumerConnector.createMessageStreams( topics, keyDecoder, valueDecoder) 这里的createMessageStreams调用的是子类ZookeeperConsumerConnector 的实现
2017-09-27 23:16:40 9453
原创 kafka0.8版本和sparkstreaming整合的两种不同方式
1- kafka-082以上kafka-010以下1-1 基于receiver的方式1-2 direct方式无接收器最近研究了不同kafka版本和sparkstreaming整合时的区别,整理如下1- kafka-0.8.2以上kafka-0.10以下http://spark.apache.org/docs/latest/streaming-kafka-0-8-integration.html#
2017-09-25 23:54:17 2004 2
原创 jdk中的queue
1- 需求背景2- LinkedBlockingQueue源码分析2-1 重要成员变量2-2 插入方法2-2-1 put方法2-2-2 offer方法2-2-3 boolean offerE e long timeout TimeUnit unit方法2-3 读取方法2-3-1 take方法2-3-2 poll方法2-3-3 E polllong timeout TimeUnit
2017-09-23 15:41:37 552
原创 sparksql中的broadcast join和prestodb中的dynamic filter比较
今天在prestodb的qq群里看到有人提到说一个子查询在presto中非常慢:select * from his_data_opt where act_no in (select act_no from id_act_map where id_number ='726067685144725');可以看出,这是一个普通的非相关子查询,如果内部子查询经过过滤条件只剩几条,那么整个查询应该非常完美的在
2017-09-12 23:09:10 1297
原创 presto对orc文件的读取
orc文件格式概述读取流程presto对orc文件和parquet文件的读取都进行了优化,那么本篇文章来分析一下都做了哪些优化1 orc文件格式概述每个orc文件都有一个文件footer,文件footer里存储了每个条带(script)的最大值最小值,可以用来过滤script。每个条带又有条带footer,具体作用未知。每个条带内部存储了行组的列存形式。2 读取流程读取流程涉及以下几个读取器的构造
2017-08-19 16:03:47 3252 1
原创 ide单步调戏presto
1-下载2- windows下编译2-1 pom文件修改2-2 编译2-3 导入到idealij3- 单步调试配置4- 执行调试4-1 文件修改4-2 启动调试4-3 客户端连接4-4 设置断点5 mac或者linux下1-下载git上搜索presto,找到prestodb下的presto,使用git clone到本地2- window...
2017-06-03 15:38:57 4894 1
原创 jprofiler使用
1 安装1-1 windows和mac安装1-2 linux安装2 使用2-1 windowmac使用2-1-1 IDE集成2-1-2 已有jvm连接2-1-3 连接远程jvm进程2-1-4 拷贝配置文件2-1-5 offline启动3 设置3-1 过滤器设置.1 安装.1-1 windows和mac安装直接下载官网最新版本安装,只有十天试用期.1-2 linux安装http:
2017-05-13 17:33:48 2084
原创 lucene5.1 fst源码分析(BooleanQuery分析)
1 测试代码1-1 写入代码1-2 读取代码2 源码分析2-1createweight2-1-1 TermQuery构造weight2-1-2 MultiTermQueryConstantScoreWrapper构造weight2-2 构造scorer2-3 求交集并集差集.1 测试代码.1-1 写入代码public static void writeIndex() throws I
2017-05-01 14:23:24 1190
原创 lucene5.1 fst源码分析(嵌入到lucene中的写入过程)
1 说明2 写入数据2-1 调用栈2-2 源码分析2-2-1 write方法2-2-2 BlockTreeTermWriter的write方法2-2-3 BlockTreeTermWriter的pushterm方法2-2-3 BlockTreeTermWriter的writerblocks方法还没添加注释2-2-5 BlockTreeTermWriter的writeblock方法.1
2017-04-24 14:47:24 1532
原创 lucene5.1 fst源码分析(fst接口方法写入和读取测试)
1 fst基本概念1-1 节点node和弧arc2 lucene中的fst测试代码3 源码分析3-1 util的get方法分析3-2 FST的findTargetArc方法3-2-1 类成员变量介绍3-2-2方法原型3-2-3源码分析3-3 readFirstRealTargetArc方法3-3 readNextRealArc方法.1 fst基本概念有限状态机.1-1 节点(no
2017-04-22 15:41:59 2391
原创 presto源码分析(PartitionedOutputOperator)
addInput方法1 addInput方法 requireNonNull(page, "page is null"); checkState(isBlocked().isDone(), "output is already blocked"); if (page.getPositionCount() == 0) { return;
2016-12-27 19:07:05 1132 1
原创 sparksql源码解析(执行计划)
[TOC]1.group by查询select count(*),sum(o_totalprice),o_orderpriority from default.orders where o_orderkey>100 group by o_orderpriority"== Parsed Logical Plan =='Aggregate ['o_orderpriority], [unresolved
2016-12-20 23:06:57 1099
原创 presto源码分析(hive的分区处理)
hive处理分区时的调用栈1 代码分析hive分区加载修改源码时遇到一个问题,就是对分区的处理,当遇到join查询时,如上篇文章presto join连接时的谓词处理所述,对于某些情况下,如果谓词带or,会吧分区字段当做普通字段处理,不会下推到表扫描处。但是hive是如何处理这种情况的呢?1 hive处理分区时的调用栈1.1 代码分析 HiveTableHandle hiveTableHandl
2016-12-04 11:22:23 3907 4
原创 presto源码分析(join中的谓词下推)
presto中的join1 PredicatePushDown举例分析1 tpch connector2 hive connector1 presto中的joinpreto在进行两表连接查询时,有时会下发谓词,有时不下发,所以对代码进行了跟踪1.1 PredicatePushDown在这个类中,visitJoin方法对join语句的谓词进行了分析,判断是否下推,代码如下:
2016-12-04 10:32:20 3873
原创 presot中的code generation
简介源码解析1 主流程代码2 cursor processer编译3 动态加载类名的构造4 在类ClassDefinition中使用各种visit方法构造类的成员变量和方法1 简介presto中使用了ASM进行代码生成,一个主要的用途是对从数据源捞上来的数据进行表达式过滤,这是代码生成的主要应用场景,主要是为了降低进行表达式评估中 JVM 的各种开销,如虚函数调用,分支预测,原始类型的对象
2016-11-20 21:23:56 1044
原创 zookeeper
搭建1-1 修改配置文件1-2 添加data1-3 启动shell命令2-1 create2-2 delete2-3 getjava api3-1 zookeeper基本概念1 搭建1-1 修改配置文件conf/zoo_sample.conf修改为conf/zoo.conf 添加以下内容: server.1=localhost:2287:33871-2 添加data创建dat
2016-11-12 21:11:33 231
原创 Presto源码分析(和hive执行计划的比较)
聚合操作比较1 presto groupby2 hive groupby1 聚合操作比较1.1 presto groupbyexplain select sum(totalprice),orderpriority from orders group by orderpriority; - Output[_col0, orderpriority] => [sum:double, orderprio
2016-10-23 10:12:31 3839
原创 Presto源码分析(hive-rcfile)
hive数据源构造数据迭代读取project操作1 hive数据源构造先来看hive record cursor的构造栈 从图中可以看到,读取hive的数据时,会构造一个ColumnBinaryHiveRecordCursor,这个应该是rcfile这类列式存储专有的读取格式,如果是sequencefile或者textfile,不是这个。具体是哪个呢,可以看看这个cursor的基类是Hiv
2016-10-21 22:52:07 1083
原创 presto源码解析(function)
function构造求平均2-1 求平均的调用栈2-2求平均的过程2-2-1 partial阶段1 function构造然后使用这些function构造一个AggregationNode 但是这些函数的具体实现在什么地方,需要进一步确认2 求平均2-1 求平均的调用栈在当前操作符获取到一个page之后,会调用next操作符的addinput方法,该方法会最终调用AverageAggrega
2016-10-06 15:53:24 1939
原创 Presto源码分析(ScanFilterAndProjectOperator)
构造函数createSourceIfNecessary方法getOutput方法RecordPageSource的处理过滤和投影其他pagesource的处理具体参见orc和parquet的分析1.构造函数protected ScanFilterAndProjectOperator( OperatorContext operatorContext,
2016-09-17 21:08:24 1937
原创 Presto源码解析(HashAggregationOperator)
GroupByHashAggregationBuilder重要成员重要方法1.GroupByHashAggregationBuilder1.重要成员 private final GroupByHash groupByHash;//包括找出group组id,添加新的gooup等 private final List<Aggregator> aggregators;//
2016-09-17 20:32:54 1082
原创 Presto源码解析(LocalExecutationPlanner类)
在visitScanFilterAndProject方法中,会使用代码生成产生cursorProcessor和pageProcessor,无法跟踪代码,所以把代码生成相关的代码注释掉,即可使用解释型产生hash的产生方法
2016-09-17 19:12:09 818
原创 presto源码分析(结果获取)
结果获取入口1.结果获取入口结果获取的入口是在StatementResource中,客户端发送http请求,由getQueryResult方法响应,代码如下: @GET @Path("{queryId}/{token}") @Produces(MediaType.APPLICATION_JSON) public Response getQueryResults(
2016-09-11 23:02:13 1453
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人