Impala 3.4 SQL查询之ScanRange流程归纳(六)

StarRocks测试 - StarRocks vs Impala 性能对比 本文对不同并发情况下的Impala与StarRocks的查询性能进行了对比测试,结果显示,StarRocks性能优于Impala,有近2倍的性能优势。 阅读详情

我们在前面几篇文章,从代码处理层面,详细分析了Impala的ScanRange相关知识,包括FE端的处理、parquet文件的处理、IO thread的处理等,涉及到的内容比较多。本文笔者将前几篇文章的内容做了一个汇总,整体看一下Impala的整个ScanRange的处理流程。需要注意的是,我们当前的分析都是基于parquet格式、remote HDFS的场景。我们将整个处理过程汇总到了一张流程图上,如下所示:
1
接下来,我们就根据流程图,来看下整个的ScanRange处理流程。

Coordinator处理

首先是左上方的紫色方框,表示的是Coordinator接收客户端发来的SQL请求,然后通过JNI传到FE端进行解析,最终生成分布式的执行信息,发到各个Executor上进行处理。这块的处理其实就是thrfit结构体在BE/FE之间的传输,我们在Impala 3.4 SQL查询之ScanRange详解(三)一文中,已经详细描述过了,这里不再赘述。

Disk Queue与IO thread构造

Executor有一个类专门用来管理本地磁盘或者远端文件系统上的IO相关的操作,叫DiskIoMgr。DiskIoMgr初始化的时候,会构造一个disk_queues_集合,集合中的每个成员都是代表一个本地disk对应的队列,或者是一种远端文件系统,例如remote HDFS/S3等。同时,对每个队列都会绑定指定数量的线程来处理后续的数据扫描,这些线程就是IO thead。不同的队列,可以通过参数配置IO thread数量,以remote HDFS为例,对应的参数就是num_remote_hdfs_io_threads,默认是8个。我们在Impala HDFS_SCAN_NODE之IO threads模型文章中,有详细介绍过这部分的处理流程。对应流程图中的,就是右上角的第一个蓝色方框。

RequestContext处理

当查询计划信息发到executor之后,executor会根据相关信息构造RequestContext对象,然后放到request_contexts_队列当中。一个RequestContext对象,可以简单理解为对一个表的扫描请求的封装。这个executor上所有每个表的扫描请求,都在这个request_contexts_队列中等待处理。
每个RequestContext都会包含一个PerDiskState集合,我们可以根据当前这个RequestContext的disk queue类型,获取到指定的PerDiskState对象,这个PerDiskState就包含了每个disk queue的状态,比如unstarted_scan_ranges_、in_flight_ranges_等。
这些包含关系就对应了流程图中的黄色方框,关于RequestContext和PerDiskState的介绍,在Impala HDFS_SCAN_NODE之IO threads模型和Impala 3.4 SQL查询之ScanRange详解(三)中都有详细说明。

Footer ScanRange构造

Executor获取到coordinator发过来的执行计划信息之后,会构造footer ScanRange对象,然后加入到unstarted_scan_ranges队列中,然后准备启动scanner线程进行后续的处理。这个过程就对应流程图中左边的绿色方框。关于footer ScanRange的构造,我们在Impala 3.4 SQL查询之ScanRange详解(四)一文中,有详细介绍。

IO thread处理

IO线程启动之后,首先会先从request_contexts_队列中获取队首的RequestContext对象,然后获取对应的PerDiskState对象,接着从PerDiskState对象的unstarted_scan_ranges_队列中获取一个ScanRange成员,获取完成之后,IO thread会将该RequestContext对象又放回到request_contexts_队列的尾部。
接着,IO thread会将刚刚获取到的ScanRange对象加入到ready_to_start_ranges_队列中。然后,再从in_flight_ranges_队列的首部获取一个ScanRange对象,这个才是IO thread真正要处理的ScanRange。
从in_flight_ranges_队列获取到ScanRange之后,IO thread就会进行实际的scan操作,操作完成之后,会更新ScanRange的相关信息。然后再判断该ScanRange是否处理完成,如果没有处理完成,则加入到in_flight_ranges_队列尾部;如果已经处理完成,则直接返回。这表示IO thread完成了本次处理,结束之后,继续上述步骤,处理其他的ScanRange,直至结束。
上述的这些流程,我们在Impala 3.4 SQL查询之ScanRange详解(四)一文中,有详细的描述。

Scanner线程处理

当Executor构造完footer ScanRange之后,就会启动scanner线程进行处理,主要就是流程图中的红色方框部分。Scanner线程首先会从ready_to_start_ranges_队列中获取头部的ScanRange进行判断,如果buffer_tag不是NO_BUFFER(以remote HDFS为例),那么会分配buffer,然后加入到in_flight_ranges_。
此时IO thread就可以获取in_flight_ranges_中的ScanRange(这里是footer ScanRange)进行处理。处理完成之后,scanner线程就会根据扫描的数据,解析parquet文件的元数据,进而构造data ScanRange。同样,分配buffer之后,会将这些data ScanRange加入到in_flight_ranges_队列。等待IO thread处理完这些data ScanRange,scanner线程再进行后续处理。关于scanner线程的处理,可以参考Impala 3.4 SQL查询之ScanRange详解(五),有详细的介绍。

总结

以上就是整个ScanRange的基本处理流程,这其中比较重要的就是理解IO thread和scanner线程各自负责的功能,当然我们省略了一些实现细节。由于我们这里讨论的是parquet格式,因此我们Impala 3.4 SQL查询之ScanRange详解(五)一文中,也详细介绍了Impala对parquet文件的处理,这个在流程图中并没有体现。对于其他的文件格式的处理,我们目前也没有展开。后续有机会,再跟大家一起学习。

记一次·Spark读Hbase 记一次·Spark读Hbase 一 、背景 过年回来,数仓发现hive的一个表丢数据了,需要想办法补数据。这个表是flume消费kafka写hive。但是kafka里只保存最近7天数据,有部分数据kafka里已经没有了。不过这份数据会同时被消费到HBase内存储一份,并且HBase内的数据是正常的。所以这次任务是读HBase数据写Hive表。 HBase表内,只有一个列族info,列族内只有一个列value。 value为“|”分割的字段字符串。 “|”切割字符串得到最后一个字段为数据的时间戳,记为ts。 阅读详情

相关推荐

SQL性能优化-算子与计划(更新中)

这样可以解决索引扫描中随机读带来的不必要性能损耗的问题,但也有一个新问题,若数据量还是比较大,则位图所需要的内存空间也会很大,因此此时会将位图按照页为单位进行构造,仅记录哪些页上有目标元组,扫上来页面后,进行一次ReCheck操作,进行二次筛选。但加了Limit情况就变了,采用HashAgg需要扫描所有数据并做哈希,采用GroupAgg+Sort的方案也需要扫描所有的数据并排序,但是采用GroupAgg+IndexScan的方案时我们仅需要精准的扫描前10个分组的数据即可。

Carrot_L的博客 1389

Impala HDFS_SCAN_NODE之IO threads模型

本文主要介绍了Impala HDFS_SCAN_NODE中的IO threads模型,通过源码进行分析,阐述了Impala对于本地disk以及各种远端dfs的处理流程,同时对HDFS_SCAN_NODE中的一些指标进行了简要解释。

skyyws的博客 1290

sqlscan:快速SQL扫描器,Dorker,Webshel​​l注入器PHP

sqlscan sqlscan是用于查找sql​​注入点的快速Web扫描程序。 不是为了教育,这是为了黑客。 使用站点地图以获得最佳结果 使用简单 多平台 快速af 酷AF 安装 需要才能运行。 PHP依赖 ext-bz2 外部卷曲 外部字符串 有关更多信息,请参见composer.json。 对于基于PC Linux debian的环境。 $ sudo apt install php php-bz2 php-curl php-mbstring curl $ sudo curl https://raw.githubusercontent.com/Cvar1984/sqlscan/d

Impalad 启动项

为什么80%的码农都做不了架构师?>>> ...

weixin_33998125的博客 1246

使用Bigemap下载地图流程

Bigemap地图下载简单流程,临时安排任务简单学习没有深入了解。

TKY666的博客 4846

网络抓包实战:如何捕获与解析802.1Q VLAN标签报文

在网络通信中,数据包是信息传输的基本单元,而VLAN(虚拟局域网)技术通过在数据链路层插入802.1Q标签,实现了网络流量的逻辑隔离与高效管理。其核心原理是在标准以太网帧头中嵌入4字节的VLAN标识,使交换机能够根据VID(VLAN ID)进行精准转发。掌握VLAN报文的捕获与解析技术,对于网络故障排查、安全审计和性能优化具有重要价值,尤其在需要验证网络隔离策略或诊断Trunk链路异常时。本文聚焦于使用Wireshark工具,结合端口镜像等实操方法,详细演示如何抓取并解读携带802.1Q标签的原始报文,帮助

weixin_33417488的博客 382

Impala高性能探秘之HDFS数据访问

Impala是一个高性能的OLAP引擎,Impala本身只是一个OLAP-SQL引擎,它访问的数据存储在第三方引擎中,第三方引擎包括HDFS、Hbase、kudu。对于HDFS上的数据,Impala支持多种文件格式,目前可以访问Parquet、TEXT、avro、sequence file等。对于HDFS文件格式,Impala不支持更新操作,这主要限制于HDFS对于更新操作的支持比较弱。本文主要介绍

Hello World 9217

数字IC后端实现之快速获取innovus中drv violation的所有net list

数字IC后端设计实现之快速获取innovus中drv violation的所有net list

weixin_37584728的博客 3350

读取位置 0x0000000000000000 时发生访问冲突_Impala高性能探秘之HDFS数据访问

Impala是一个高性能的OLAP引擎,Impala本身只是一个OLAP-SQL引擎,它访问的数据存储在第三方引擎中,第三方引擎包括HDFS、Hbase、kudu。对于HDFS上的数据,Impala支持多种文件格式,目前可以访问Parquet、TEXT、avro、sequence file等。对于HDFS文件格式,Impala不支持更新操作,这主要限制于HDFS对于更新操作的支持比较弱。本文主要介...

weixin_39923262的博客 1237

基于eNSP的小型企业网络设计

在本次计算机网络课程设计中,围绕“小型企业网络搭建”这一主题,成功构建了一个高效、安全且易于管理的企业内部网络。通过本次课程设计,我们不仅掌握了小型企业网络搭建的关键技术和最佳实践,还培养了团队协作和问题解决的能力。本项目所构建的网络系统不仅满足了当前的业务需求,还具备良好的可扩展性和灵活性,为企业未来的数字化转型奠定了坚实的基础。

m0_67403143的博客 1442

从硬件拆解到图像生成:一次搞懂MRI设备(主磁体、梯度线圈、射频系统)是如何协同工作的

本文深入解析MRI设备的三大核心系统——主磁体、梯度线圈和射频系统如何协同工作,实现从量子现象到诊断图像的转化。通过详细的技术参数和临床案例,揭示磁共振成像(MRI)在医疗图像处理中的精密工程原理和最新技术突破,帮助读者全面理解这一现代医学影像技术的运作机制。

weixin_33734785的博客 548

Impala 3.4 SQL查询之ScanRange详解(四)

在上篇文章中,我们主要介绍了ScanRange的构造,以及在FE和BE端的一些处理流程。同时,我们还介绍了IO thead处理模型中一个比较重要的对象RequestContext::PerDiskState,以及部分成员变量的含义,在本篇文章中,我们将介绍其中一个比较重要的成员:unstarted_scan_ranges_。

skyyws的博客 1069

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例

增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。

xiaoheshang_123的博客 272

HDFS DataNode扫描机制及相关参数

目录 HDFS中的Block Block Scanner & Volume Scanner Directory Scanners Disk Checker 配置整理   众所周知,HDFS中数据都是保存在DataNode中,通过复制相同的数据到多个DN中,HDFS可以容忍DN的失败。但如果某些DN的磁盘出现故障,会怎么样呢?本文解释了DN上的一些后台任务是如何工作的,以帮助HDFS跨多...

MAYIBO—BG的专栏 3672

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 601

《Android系统开发中高级定制专栏导读》

欢迎来到【Android 中高级系统定制】专栏!在这里,将深入探讨Android系统开发与定制的方方面面,涵盖从权限管理、驱动开发到系统应用配置等多个领域。

我其实什么都不会 1579

SQL Server中SCAN 和SEEK的区别

From: http://blogs.msdn.com/b/apgcdsd/archive/2012/08/01/sql-server-scan-seek.aspx SQL SERVER使用扫描(scan)和查找(seek)这两种算法从数据表和索引中读取数据。这两种算法构成了查询的基础,几乎无处不在。Scan会扫描并且返回整个表或整个索引。 而seek则更有效率,根据谓词(predicate...

weixin_30532837的博客 287

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

大数据之路读书笔记-04离线数据开发

从采集系统中收集了大量的原始数据后,数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋能于商业和创造价值的目的。面对海量的数据和复杂的计算,阿里巴巴的数据计算层包括两大体系:数据存储及计算平台 (离线计算平MaxCompute 实时计算平台 StreamCompute 、数据整合及管理体系( OneData) 本章主要介绍 MaxCompute 和阿里巴巴内部基于 MaxCompute的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍。阿里数据研发

数字人生 1439

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

读书笔记二 ---大数据之路

开发平台: SQLSCAN:代码检测 SQLSCAN根据所配置的规则执行相应的规则校验。 SQLSCAN将检查成功或者失败的信息传回D2. D2的IDE显示OK (成功) 、WARNNING (警告) 、FAILED(失败,禁止用户提交)等消息。 SQLSCAN主要有如下三类规则校验: 代码规范类规则,如表命名规范、生命周期设置、表注释等。 代码质量类规则,如调度参数使用检查、分母为0提醒、NULL值参与计算影响结果提醒、插入字段顺序错误等。 代码性能类规则,如分区裁剪失效、扫描大表提醒、重复计算检测等.

qq_38215991的博客 316

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Postgresql SQL 优化 --full scan index scan index only 的区别

在查询中一般通过查询计划中可以发现如下的一些东西,如 full scan , index scan , index only 这三种对于表访问的方式。那么我们的着重对这三个经常看到的执行计...

sql server的专栏 2265

Hadoop参数汇总

Hadoop参数汇总 @(hadoop)[配置] linux参数 以下参数最好优化一下: 文件描述符ulimit -n 用户最大进程 nproc (hbase需要 hbse book) 关闭swap分区 设置合理的预读取缓冲区 Linux的内核的IO调度器 JVM参数 JVM方面的优化项Hadoop Performance Tuning Guide Hadoop参数大全 适用

2118

推荐一款SQL注入漏洞扫描利器 —— SQL scanner

推荐一款SQL注入漏洞扫描利器 —— SQL scanner 项目地址:https://gitcode.com/gh_mirrors/sq/SQL-scanner 在网络安全领域,SQL注入一直是攻击者利用的常见手段之一,对网站安全构成了重大威胁。为了帮助开发者和安全人员更好地检测并修复潜在的SQL注入漏洞,我们向您推荐这款名为“SQL scanner”的强大工具。 项目介绍 SQL scanne...

gitblog_00048的博客 837

Impala性能调优

以下部分介绍了影响Impala功能性能的因素,以及调整,监视和基准测试Impala查询和其他SQL操作的过程。 本节还介绍了最大化Impala可扩展性的技术。 可扩展性与性能相关:它意味着随着系统工作负载的增加,性能仍然很高。 例如,减少执行的磁盘I / O. 通过查询可以加速单个查询,同时通过使同时运行更多查询变得切实可行来提高可扩展性。 有时,优化技术比性能更能提高扩展性。 例如,减少查询的内...

sunchengquan的博客 1万+

Impala 需要的HDFS参数简析

安装Impala时需要调整几个HDFS参数,以达到最佳性能:1.dfs.client.read.shortcircuit(必选):当设置这个参数后,客户端callblockSeekTo(target)会去获取一个BlockReaderLocal,不过这里注意,当block复制未完成时不可进行shortcircuit read(HDFS-2757:https://issues....

weixin_34408624的博客 267

Impala HDFS_SCAN_NODE之AverageHdfsReadThreadConcurrency

本文主要从代码分析,介绍了Impala的HDFS_SCAN_NODE中的AverageHdfsReadThreadConcurrency这个counter的含义,以及是如何进行更新和计算的。

skyyws的博客 666

impala的 join查询的优化实践

查询语句 CREATE TABLE result as SELECT t1.crossing_id AS cid,t1.plate_no AS pn1,t2.plate_no AS pn2,t1.pt_timestamp ASptts1,t2.pt_timestamp AS ptts2 FROM (select * FROM datakudu) AS t1 INNER JOIN (select ...

qqqq0199181的博客 5185
上一篇: Impala 3.4 SQL查询之ScanRange详解(五)
下一篇: Impala 4.0源码解析之BROADCAST/SHUFFLE代价计算
skyyws
博客等级 码龄16年 115粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值