HiveSQL优化
- order by是全局排序,建议加上limit一起使用,如海量数据减轻服务器压力,加快查询效率;
- 数据聚合指标时,不建议使用 count(distinct XX)建议使用Group by 防止内存溢出;
- select语句查询时建议指定字段,不建议使用 * ,否则数据量大导致崩掉喜提加班;
DataX与Sqoop区别
- dataX是阿里集团开发的一款开源数据同步工具;sqoop是Apache软件基金会开发开源工具;
- dataX适合各种数据库进行数据传递;sqoop比较兼容hadoop组件为其数据同步功能;
- dataX采用了JSON格式配置文件来定义数据,定义规则;sqoop通过命令行工具进行配置,简单易上手;
- dataX适合复杂的数据同步和应用场景;sqoop特别适合大数据处理场景下数据导入导出;
Spark为什么比MapReduce快
- 内存和磁盘
- MR在map阶段会将中间结果写入磁盘中,再由reduce阶段从磁盘中对取数据,频繁的磁盘IO消耗大量时间;
- spark就不需要将中间结果写入磁盘中,利用了RDD原理,每个RDD都会负责好各自的中间结果;
- 实时计算
- MR支持批处理作业
- spark Streaming支持流式数据处理;
Spark中RDD是什么
背景
RDD是Spark一种抽象的数据结构,表示了分布式数据集,例如集合;有多个分区组成,每个分区都分配了单独的task进行处理,支持并行计算能力;
特性
不可变性 | RDD是不可变的数据结构,一旦创建无法修改,只能通过转换操作生产新的RDD; |
弹性 | RDD具有容错性,操作过程中数据丢失,可以通化工血统充型计算来恢复数据; |
分布式 | RDD可以在多个节点上并行处理,充分利用了集群的优势 |
可持久化 | RDD可以被持久化到内存和磁盘中,后续需要可直接调取; |
类型化 | RDD可以是键值对也可以是数据集合,根据数据的不同选择不同类型的RDD |
HiveSQL与SparkSQL区别
- 底层计算框架
hiveSQL是基于hadoop中mapreduce框架实现的,通过hive将SQL转换为mapreduce进行数据处理 |
sparkSQL是基于spark内存来实现的,通过spark将SQL转换为RDD和DataFrame操作进行处理 |
- 计算性能
sparkSQL在内存中计算能力强一些,查询速度快 |
hiveSQL执行原理按照mapreduce原理,将map阶段数据存放磁盘,由reduce来读取磁盘数据,延迟缓慢一些; |
- 数据模型
hiveSQL支持hive表和分区表,以及hive表的元数据存储和管理,适合数据仓库查询和处理 |
sparkSQL支持dataFrame和dataset,具有灵活的处理数据和分析功能 |
hive on spark和spark on hive区别
-
hive on spark
hiveSQL编写->底层转换为RDD->分析处理 |
- Hive on Spark指的是在Hive中使用Spark作为计算引擎,将Hive的SQL查询转换为Spark的RDD操作或DataFrame操作来进行数据处理。
- 在Hive on Spark中,Hive仍然充当元数据管理和查询优化的角色,而Spark负责实际的数据计算和处理。
- Hive on Spark通常用于提高Hive SQL查询的性能和效率,利用Spark的内存计算能力来加速数据处理过程。
-
spark on hive
hive中创数据库和表->sparkSQL编写->底层使用RDD进行处理 |
- Spark on Hive指的是在Spark中使用Hive作为数据仓库和元数据存储,通过Hive提供的数据表和元数据信息来进行数据查询和处理。
- 在Spark on Hive中,Spark作为计算引擎,可以直接读取Hive表的数据,并通过SparkSQL进行数据处理和分析。
- Spark on Hive通常用于在Spark中利用Hive的元数据管理和数据仓库功能,方便地读取和处理Hive表中的数据。