### SparkSQL开发与优化实践知识点概述 #### 一、TDWSparkSQL简介及使用 - **定义**: TDWSparkSQL是一种改进版的SparkSQL,它兼容了TDWHive语法和TDW的数据格式,并且对原有SparkSQL进行了多方面的增强。 - **特性**: - **兼容TDWHive语法**: 包括支持二级分区的查询和写入、Hive UDF函数等。 - **数据格式兼容**: 支持TDWHive元数据存储格式、Protobuf表、PG表等多种数据存储格式。 - **自动分区功能**: 可根据数据量自动调整分区数量,提高处理效率。 - **Python UDF/UDAF支持**: 增强了用户自定义函数的能力。 - **版本**: 当前版本基于SparkSQL 1.6,SparkSQL 2.1版本正在测试阶段。 #### 二、TDWSparkSQL内部机制 - **架构**: - **客户端**: 提交SQL至HiveServer。 - **HiveServer**: 将SQL转换为SparkSQL Job并通过Yarn集群模式执行。 - **Yarn Cluster**: 负责资源管理和作业调度。 - **Executor**: 执行具体的计算任务。 - **SparkDriver**: 控制Job的执行流程。 - **Driver离散化**: - **之前**: - SparkDriver运行在HiveServer上,可能会导致HiveServer压力过大。 - 需要限制HiveServer上的SQL并行度。 - **之后**: - SparkDriver运行在Application Master (AM)上,减轻了HiveServer的压力。 - 改进了作业状态获取方式、增加了SparkClient与AM之间的新通信协议,以及通过HDFS直接获取SQL返回数据的方式。 - **自动分区设置**: - 根据数据大小动态调整分区数量,例如对于15GB的数据可以设置200个分区,而对于200GB的数据同样设置200个分区。 #### 三、TDWSparkSQL实践与调优 - **SQL应用举例**: - 通过`SELECT t1.a, SUM(t2.b) FROM t1 JOIN t2 ON t1.a = t2.a GROUP BY t1.a`示例,展示了如何进行表联接操作和聚合计算。 - 比较了TDWSparkSQL与Hive在处理相同查询时的区别,主要体现在TDWSparkSQL减少了HDFS的读写次数。 - **性能优势**: - 相比Hive,TDWSparkSQL减少了对HDFS的读写操作,提高了整体处理速度。 - **应用场景**: - **数据提取**: 如画像分析、精准推荐、自动报表等。 - **数据应用**: 利用GraphX、MLib等工具进行图形处理和机器学习。 - **架构组件**: - **TDW大数据平台**: - TDBank、Gaia(CPU/GPU/MEM)、Hive、Angel、Ceph、HDFS、HBase等组件共同构建了一个完整的生态系统。 - 包括数据接入(Lhotse)、即时查询(IDE/IDEX)、机器学习(Tesla)等多个环节。 - **SQL-Engine架构**: - 包含Lhotse、IDE、PLC、JDBC、Thrift、HiveServer、TDWHive、MR、TDWSparkSQL、Spark、MetaStore、YARN、HDFS等关键组件。 - 描述了SQL执行的完整流程,包括从IDE提交SQL、经过HiveServer转换为SparkSQL Job、再到最终的执行结果展示。 - **兼容性改造**: - **语法兼容**: - 支持多种SQL语法,如二级分区查询和写入。 - **数据格式兼容**: - 支持TDWHive元数据存储格式、Protobuf表、PG表等。 - **Driver离散化**: - 通过将SparkDriver运行在AM上,避免了对HiveServer的压力,并实现了更高效的资源利用。 通过上述知识点的总结,我们可以看到TDWSparkSQL不仅在语法和数据格式上与TDWHive保持高度兼容,还通过一系列优化措施显著提升了性能表现。特别是在大规模数据处理场景下,这些优化措施能够有效提升系统的整体效率。
剩余104页未读,继续阅读
- 粉丝: 0
- 资源: 30
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助