上篇进行过Hive/Impala/集算器的分组计算的性能测试,本篇进行关联计算的性能测试及结果说明。
窄表的关联计算测试
数据样本
被关联表p_narrow。
列数:11
行数:5亿
文本状态下所占空间:120.6G。
数据结构: personid int,name string,sex int,cityid int,birthday int,degree int,col1 string,col2 int,col3
int,col4 int,col5 string
维表d_narrow
列数:9
行数:1000万行
文本状态下所占空间:563M。
数据结构:id int, parentid int, col1 int, col2 int, col3 int, col4 int, col5 int, col6 int, col7 int
说明:
1、被关联表:类似于SQL中Join左侧的表,行数较多。比如订单表。
2、维表:类似于SQL中join右侧的表,行数较少。比如客户ID-客户名表。
测试案例
Hive:select sum(p_narrow.col3), count(p_narrow.col5), sum(d_narrow.col7), d_narrow.id%10000 from p_narrow join d_narrow on d_narrow.id=p_narrow.col7 group by d_narrow.id%10000
Impala:select sum(p_narrow.col3), count(p_narrow.col5), sum(d_narrow.col7), d_narrow.id%10000 from p_narrow join d_narrow on d_narrow.id=p_narrow.col7 group by d_narrow.id%10000
集算器: 代码分为三部分,分别是:汇总机程序、节点机主程序、节点机子程序。
测试结果:
宽表的关联计算测试
数据样本
被关联表p
列数:106
行数:6000万行
文本状态下所占空间:127.9G。
数据结构:personid int,name string,sex int,cityid int,birthday int,degree int,col1 int,col2 int,col3 int,col4 int,col5 int,col6 int,col7 int,col8 int,col9 int,col10 int,col11 int,col12 int,col13 int,col14 int,col15 int,col16 int,col17 int,col18 int,col19 int,col20 int,col21 int,col22 int,col23 int,col24 int,col25 int,col26 int,col27 int,col28 int,col29 int,col30 int,col31 int,col32 int,col33 int,col34 int,col35 int,col36 int,col37 int,col38 int,col39 int,col40 int,col41 int,col42 int,col43 int,col44 int,col45 int,col46 int,col47 int,col48 int,col49 int,col50 int,col51 int,col52 int,col53 int,col54 int,col55 int,col56 int,col57 int,col58 int,col59 int,col60 int,col61 int,col62 int,col63 int,col64 int,col65 int,col66 int,col67 int,col68 int,col69 int,col70 int,col71 int,col72 int,col73 int,col74 int,col75 int,col76 int,col77 int,col78 int,col79 int,col80 int,col81 int,col82 int,col83 int,col84 string,col85 string,col86 string,col87 string,col88 string,col89 string,col90 string,col91 string,col92 string,col93 string,col94 string,col95 string,col96 string,col97 string,col98 string,col99 string,col100 string
维表d
列数:102
行数:1000万行
文本状态下所占空间:6.8G
数据结构:id int, parentid int,col1 int,col2 int,col3 int,col4 int,col5 int,col6 int,col7 int,col8 int,col9 int,col10 int,col11 int,col12 int,col13 int,col14 int,col15 int,col16 int,col17 int,col18 int,col19 int,col20 int,col21 int,col22 int,col23 int,col24 int,col25 int,col26 int,col27 int,col28 int,col29 int,col30 int,col31 int,col32 int,col33 int,col34 int,col35 int,col36 int,col37 int,col38 int,col39 int,col40 int,col41 int,col42 int,col43 int,col44 int,col45 int,col46 int,col47 int,col48 int,col49 int,col50 int,col51 int,col52 int,col53 int,col54 int,col55 int,col56 int,col57 int,col58 int,col59 int,col60 int,col61 int,col62 int,col63 int,col64 int,col65 int,col66 int,col67 int,col68 int,col69 int,col70 int,col71 int,col72 int,col73 int,col74 int,col75 int,col76 int,col77 int,col78 int,col79 int,col80 int,col81 int,col82 int,col83 int,col84 int,col85 int,col86 int,col87 int,col88 int,col89 int,col90 int,col91 int,col92 int,col93 int,col94 int,col95 int,col96 int,col97 int,col98 int,col99 int,col100 int
说明:
1、被关联表:类似于SQL中Join左侧的表,行数较多。比如订单表。
2、维表:类似于SQL中join右侧的表,行数较少。比如客户ID-客户名表。
测试案例
Hive:select sum(p.col3), count(p.col5), sum(d.col7), d.id%10000 from p join d on d.id=p.col7 group by
d.id%10000
Impala:select sum(p.col3), count(p.col5), sum(d.col7), d.id%10000 from p join d on d.id=p.col7 group by d.id%10000
集算器: 代码分为三部分,分别是:汇总机程序、节点机主程序、节点机子程序。
测试结果
小结
A、窄表的分组汇总
1、Impala、集算器的性能明显好于Hive,快一倍或更多。
2、Impala与集算器略有差异,但并不明显。
3、分组列数和汇总列数对三种解决方案的性能影响都不大。
B、宽表的分组汇总
1、Impala、集算器的性能明显好于Hive,快一倍或更多。
2、Impala与集算器略有差异,但并不明显。
3、分组列数和汇总列数对三种解决方案的性能影响都不大。
4、与窄表相比,表的列数对性能影响不大,整表体积对性能有直接影响。Impala在宽表时性能略有下降而Hive和集算器则略有上升。
C、窄表的关联计算
1、Impala、集算器性能明显强于Hive,接近3倍。
2、Implala比集算器略强,但差异并不明显。
D、宽表的关联计算
1、Impala、集算器性能明显强于Hive,接近3倍。
2、Implala比集算器快1秒,基本可以认为两者性能一致。
测试结果解读
Hive的性能较差,是由于它的底层是MapReduce,而MapReduce是通过外存文件实现计算节点间的数据交换,这就导致大量的硬盘IO时间。Implala和集算器可以通过内存来直接交换中间计算结果,性能因此更好。
通过文件来交换数据并非没有好处,事实上在不稳定的大集群环境中,文件交换可以保证中间计算结果的安全。Impala只支持直接交换,Hive只支持文件交换,集算器两者皆可,由程序员自由决定。
分组汇总时集算器比Impala的性能略强,这主要是由于集算器除了支持HDFS,还支持直接读写本地硬盘。而Impala必须经过HDFS才能访问硬盘,多了一层控制自然会慢。
但在关联计算中,我们可以看到集算器和Impala的数据反过来了,Impala的性能等于或略强于集算器。这是因为Impala虽然要经过HDFS来访问硬盘,但是它也会生成本地代码来优化计算性能,比集算器使用的JAVA虚拟机性能要高。可以猜想,分组汇总时更强调数据读取,而关联计算时更强调计算,因此产生了关联计算时Impala反超集算器的现象。
分组列数和汇总列数对分组汇总的性能影响都不大,这是由于本案例的算法比较简单,时间大部分消耗在硬盘读写而不是数据计算上。不过Hive和Implala不是集算器这类过程性语言,太复杂的运算也难以支持,这种CPU空耗属于正常现象。
另外我们将计算结果限制为一万条,这是由于Impala对内存的依赖较大太,大的结果集会导致内存溢出。Hive只支持外存计算因此不存在内存限制。集算器修改算法后也可以实现外存计算,不过性能会有所下降。
相关推荐
【大数据基础入门培训课程——基于Hadoop的数据仓库Hive】模块11主要涵盖了Hive的基础知识,包括其系统架构、工作原理、高可用性(HA)原理,以及相关的数据分析工具Impala,还有Hive的编程实践。以下是这些知识点的...
Impala与HDFS(Hadoop Distributed File System)和Hive Metastore紧密集成,支持实时分析存储在Hadoop集群中的大量数据。 标题"impalajdbc"表明我们要讨论的是关于Impala的Java数据库连接器(JDBC)驱动。JDBC是...
【大数据面试录音07.zip】这个压缩包文件的标题揭示了其主要内容——一次关于大数据岗位的面试录音。在准备大数据领域的面试时,这样的资源是非常有价值的,因为它提供了实际面试场景的真实反馈,可以帮助求职者了解...
在第一个联通大数据项目——移动终端上网数据实时分析处理系统中,开发环境包括IDEA、Eclipse、Maven、JDK,系统架构由Hadoop、Zookeeper、Flume、Spark、Hive、MySQL、Sqoop和Oracle组成。此项目中,数据通过FTP...
文案: “CSDN博客之星”是技术人的闪耀舞台,汇聚创新与分享的力量!通过参与评选,你不仅能提升个人品牌,还能链接行业精英,拓展技术视野。活动见证无数博主的成长,助力优质内容传播。无论你是技术爱好者还是资深从业者,这里都能让你展现才华,加速成长。原创干货、粉丝互动、持续输出——掌握这些秘诀,让你的博客脱颖而出,成为下一个“博客之星”!
mpls-ospf全all
内容概要:本文详细介绍了基于三菱FX3U PLC的四仓位配方控制系统,重点讲解了如何利用ST结构化文本和梯形图两种编程方式实现工业级配方管理。主要内容包括配方存储采用结构体数组的方式,使配方参数管理更加高效;配方执行过程中使用ST语言实现复杂的三段速控制逻辑,确保精确配料;通信方面通过FX3U-485ADP模块进行Modbus通信,保障数据传输的实时性和稳定性;报警系统采用状态码机制,便于快速定位和解决问题;此外,还涉及了分期付款功能以及暂停续料功能的具体实现方法。整个系统经过实际项目的验证,能够稳定应对每日200+批次的生产任务。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程有一定了解并希望深入掌握ST结构化文本和梯形图混合编程技巧的人群。 使用场景及目标:适用于需要高精度、高效率配方管理的工业生产线,如食品加工等行业。主要目标是提高生产效率,减少人为错误,增强系统的可靠性和易维护性。 其他说明:文中提供了大量具体的代码片段和实际案例,有助于读者更好地理解和应用所介绍的技术。同时强调了全中文变量命名的优势,使得新入职员工也能迅速上手。
内容概要:本资源包含2023年第十四届蓝桥杯嵌入式组省赛第一套模拟题的完整实现代码,涵盖STM32CubeMX工程配置、HAL库开发、传感器数据采集、LCD显示控制、按键中断处理等核心模块。配套代码注释详细,包含模块化工程结构设计思路及竞赛评分要点解析。 适用人群:电子类专业本科/高职学生、蓝桥杯嵌入式组参赛选手、STM32开发初学者、嵌入式系统设计爱好者。 使用场景及目标:适用于蓝桥杯赛前专项训练、嵌入式系统开发实战演练、STM32HAL库应用学习。通过本资源可掌握竞赛级项目开发规范,提升外设驱动开发能力,理解实时数据采集与界面交互的实现逻辑。 其他说明:代码基于STM32G4系列开发板实现,包含多任务调度框架设计,涉及ADC/DAC、TIM定时器、GPIO中断等关键外设操作。建议配合官方开发板使用,资源包含硬件连接示意图及调试排错指南,注意部分外设配置需根据实际硬件调整。
内容概要:本文详细介绍了如何利用MATLAB构建一个能够模拟8字漂移动态特性的车辆模型。首先,通过设定车辆的基本参数(如质量、轴距、转动惯量)以及控制器参数(如比例系数、滑移率微分系数),并采用双频正弦波叠加的方法生成8字轨迹。接着,深入探讨了轮胎滑移率的非线性特性及其对横摆角速度的影响,展示了如何通过引入迟滞效应使仿真的物理行为更加逼真。此外,文中还讨论了转向增益、扭矩分配等关键因素对漂移稳定性和轨迹精度的作用,并提供了具体的代码实现方法。最后,通过轨迹可视化工具验证了模型的有效性。 适合人群:对汽车动力学感兴趣的研究人员、工程师以及有一定MATLAB编程基础的学习者。 使用场景及目标:适用于研究车辆动态性能、开发自动驾驶系统或进行赛车运动分析等领域。主要目标是帮助读者掌握车辆动力学建模的基本原理和技术手段,同时提高其解决复杂工程问题的能力。 其他说明:文中不仅给出了完整的代码示例,还分享了许多实用的小贴士,如如何调整参数以获得更好的仿真效果,以及如何优化代码结构以提升运行效率。对于希望深入了解车辆控制系统设计的人来说,这是一份不可多得的学习资料。
Java项目基于ssm框架的课程设计,包含LW+ppt
Delphi 12.3控件之WebView2Loader.rar
内容概要:本文详细介绍了网页开发的基础技术,涵盖HTML、CSS、JavaScript、JSON和Ajax五个方面。首先讲解了HTML的历史和发展,重点介绍了HTML标签及其用法;接着阐述了CSS的导入方式、选择器和样式设置;随后深入探讨了JavaScript的基础语法、内置对象和DOM操作;再者解释了JSON的语法和数据类型,强调其在数据交换中的重要性;最后介绍了Ajax技术及其应用场景,展示了如何使用原生XMLHttpRequest、jQuery和Axios进行异步请求。 适合人群:适用于初学者和有一定经验的前端开发人员,帮助他们全面掌握网页开发的基础知识和技术。 使用场景及目标:① 初学者可以通过本文快速入门HTML、CSS和JavaScript,搭建简单的网页;② 已有基础的开发者可以深入了解JSON和Ajax,提升数据处理和异步交互的能力。 阅读建议:本文内容详尽,建议按章节逐步学习,结合实例代码进行练习,以便更好地理解和掌握各项技术要点。
计算机科学与技术- 软件开发工具 培训资料
内容概要:本文深入剖析了FX3U PLC控制器的硬件架构及其嵌入式开发细节。首先介绍了控制器的整体规格,如尺寸、主控芯片(STM32F103VCT6)、电源设计等。接着详细讲解了数字量输入输出模块的设计,包括继电器输出和光耦隔离的应用。对于模拟量处理部分,则探讨了ADC的校准与抗干扰措施。此外,通讯模块的设计也是重点之一,涵盖了CAN总线、RS485等接口的具体实现方法。最后,文章还提到了开发资料的完整性以及一些优化建议。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC控制器和嵌入式开发感兴趣的读者。 使用场景及目标:帮助读者理解FX3U PLC控制器的工作原理,掌握其硬件设计特点和嵌入式编程技巧,适用于小型产线控制系统或智能仓储系统的开发。 其他说明:文中提供了大量源代码片段,便于读者更好地理解和实践相关知识点。同时强调了在实际应用中需要注意的问题,如电磁兼容性和信号完整性等。
Java项目基于ssm框架的课程设计,包含LW+ppt
内容概要:本文详细介绍了基于MATLAB/Simulink的三电平逆变器SVPWM(空间矢量脉宽调制)控制系统的构建方法。首先,文章讲解了NPC(中点箝位)结构的三电平逆变器主电路搭建步骤,包括IGBT模块的选择和参数配置。然后深入探讨了SVPWM算法的具体实现,涵盖扇区判断、矢量合成、作用时间计算以及开关状态选择等关键技术点。此外,还讨论了电容电压平衡控制、死区时间和载波生成等重要细节。最后,通过FFT分析验证了系统的性能,展示了良好的波形质量和低谐波失真率。 适用人群:电力电子工程师、自动化专业学生、从事逆变器研究的技术人员。 使用场景及目标:适用于希望深入了解三电平逆变器SVPWM控制原理的研究人员和技术开发者。目标是掌握如何利用MATLAB进行高效、精确的逆变器仿真建模,优化波形质量,减少谐波失真。 其他说明:文中提供了大量实用的MATLAB代码片段,帮助读者更好地理解和实践相关理论。同时提醒了一些常见的仿真陷阱,如求解器选择不当可能导致的问题。强调了动手实践的重要性,鼓励读者自行搭建模型以加深理解。
Delphi 12.3控件之nrCommLib Pro v9.54 Full Source for D12.7z
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载
notepad–是一个国产跨平台、轻量级的文本编辑器,是替换notepad++的一种选择。其内置强大的代码对比功能,让你丢掉付费的beyond compare。