当前位置: 首页 > news >正文

江苏住房城乡建设部部官方网站服务器建站用哪个系统好

江苏住房城乡建设部部官方网站,服务器建站用哪个系统好,门户网站如何建设,可以做网站的软件上传歌曲Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询#xff0c;而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1#xff1a;过滤提前 未优化的查询 val salesData spark.read.parquet(而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1过滤提前 未优化的查询 val salesData spark.read.parquet(hdfs://sales_data.parquet) val result salesData.groupBy(product_id).agg(sum(amount).alias(total_sales)).filter($total_sales 1000)优化后的查询 val salesData spark.read.parquet(hdfs://sales_data.parquet) val filteredData salesData.filter($amount 1000) val result filteredData.groupBy(product_id).agg(sum(amount).alias(total_sales))优化解释通过在聚合之前应用过滤减少了聚合操作处理的数据量从而减少了执行时间和资源消耗。 示例 2使用广播连接 未优化的查询 val largeTable spark.read.parquet(hdfs://large_table.parquet) val smallTable spark.read.parquet(hdfs://small_table.parquet) val result largeTable.join(smallTable, Seq(key))优化后的查询 import org.apache.spark.sql.functions.broadcastval largeTable spark.read.parquet(hdfs://large_table.parquet) val smallTable spark.read.parquet(hdfs://small_table.parquet) val result largeTable.join(broadcast(smallTable), Seq(key))优化解释如果有一个小表和一个大表需要连接使用广播连接可以将小表的数据发送到每个节点减少数据传输和shuffle操作提高查询效率。 示例 3避免不必要的Shuffle操作 未优化的查询 val transactions spark.read.parquet(hdfs://transactions.parquet) val result transactions.repartition(100, $country).groupBy(country).agg(sum(amount).alias(total_amount))优化后的查询 val transactions spark.read.parquet(hdfs://transactions.parquet) val result transactions.groupBy(country).agg(sum(amount).alias(total_amount))优化解释repartition会导致全局shuffle而如果后续的操作是按照同一个键进行聚合这个操作可能是不必要的因为groupBy操作本身会引入shuffle。 示例 4处理数据倾斜 未优化的查询 val skewedData spark.read.parquet(hdfs://skewed_data.parquet) val referenceData spark.read.parquet(hdfs://reference_data.parquet) val result skewedData.join(referenceData, key)优化后的查询 val skewedData spark.read.parquet(hdfs://skewed_data.parquet) val referenceData spark.read.parquet(hdfs://reference_data.parquet) val saltedSkewedData skewedData.withColumn(salted_key, concat($key, lit(_), (rand() * 10).cast(int))) val saltedReferenceData referenceData.withColumn(salted_key, explode(array((0 to 9).map(lit(_)): _*))).withColumn(salted_key, concat($key, lit(_), $salted_key)) val result saltedSkewedData.join(saltedReferenceData, salted_key).drop(salted_key)优化解释当存在数据倾斜时可以通过给键添加随机后缀称为salting来分散倾斜的键然后在连接后去除这个后缀。 示例 5缓存重用的DataFrame 未优化的查询 val dataset spark.read.parquet(hdfs://dataset.parquet) val result1 dataset.filter($date 2024-01-01).agg(sum(amount)) val result2 dataset.filter($date 2024-01-02).agg(sum(amount))优化后的查询 val dataset spark.read.parquet(hdfs://dataset.parquet).cache() val result1 dataset.filter($date 2024-01-01).agg(sum(amount)) val result2 dataset.filter($date 2024-01-02).agg(sum(amount))优化解释如果同一个数据集被多次读取可以使用cache()或persist()方法将数据集缓存起来避免重复的读取和计算。 在实际应用中优化Spark SQL查询通常需要结合数据的具体情况和资源的可用性。通过观察Spark UI上的执行计划和各个stage的详情可以进一步诊断和优化查询性能。 二、执行计划分析 逻辑执行计划 逻辑执行计划是对 SQL 查询语句的逻辑解释它描述了执行查询所需执行的操作但不涉及具体如何在集群上执行这些操作。逻辑执行计划有两个版本未解析的逻辑计划unresolved logical plan和解析的逻辑计划resolved logical plan。 举例说明 假设我们有一个简单的查询 SELECT name, age FROM people WHERE age 20在 Spark SQL 中这个查询的逻辑执行计划可能如下所示 Analyzed Logical Plan name: string, age: int Filter (age#0 20) - Project [name#1, age#0]- Relation[age#0,name#1] parquet这个逻辑计划的组成部分包括 Relation: 表示数据来源这里是一个 Parquet 文件。Project: 表示选择的字段这里是name和age。Filter: 表示过滤条件这里是age 20。 物理执行计划 物理执行计划是 Spark 根据逻辑执行计划生成的它包含了如何在集群上执行这些操作的具体细节。物理执行计划会考虑数据的分区、缓存、硬件资源等因素。 举例说明 对于上面的逻辑执行计划Spark Catalyst 优化器可能生成以下物理执行计划 Physical Plan *(1) Project [name#1, age#0] - *(1) Filter (age#0 20)- *(1) ColumnarToRow- FileScan parquet [age#0,name#1] Batched: true, DataFilters: [(age#0 20)], Format: Parquet, Location: InMemoryFileIndex[file:/path/to/people.parquet], PartitionFilters: [], PushedFilters: [IsNotNull(age), GreaterThan(age,20)], ReadSchema: structage:int,name:string这个物理执行计划的组成部分包括 FileScan: 表示数据的读取操作这里是从 Parquet 文件读取。ColumnarToRow: 表示数据格式的转换因为 Parquet 是列式存储需要转换为行式以供后续操作。Filter: 表示过滤操作这里是执行age 20的过滤条件。Project: 表示字段选择操作这里是选择name和age字段。 物理执行计划还包含了一些优化信息例如 Batched: 表示是否批量处理数据这里是true。DataFilters: 实际应用于数据的过滤器。PushedFilters: 表示已推送到数据源的过滤器这可以减少从数据源读取的数据量。 要查看 Spark SQL 查询的逻辑和物理执行计划可以在 Spark 代码中使用.explain(true)方法 val df spark.sql(SELECT name, age FROM people WHERE age 20) df.explain(true)这将输出上述的逻辑和物理执行计划信息帮助开发者理解和优化查询。
http://www.tj-hxxt.cn/news/131386.html

相关文章:

  • 学校网站建设报价单2018做分享网站
  • 网站开发语言版本不同广州版单一窗口
  • 网站怎么做黑链接东莞寮步华衍学校
  • 什么是网站的入口wordpress 主题使用
  • 找人做个网站需要多少钱求个网站好人有好报2023
  • 上海交通大学网站建设摄影网站建设任务书
  • 一级a做爰片免费网站黄有文化内涵又高雅的公司名字
  • 佛山市城市建设档案馆网站扁平化设计 科技感网站素材
  • 企业网站有哪些例子月嫂网站建设
  • jsp 做网站需要什么黑龙江最新消息今天
  • 什么网站可以看女人唔易做六安网络科技股份有限公司
  • 网站建设介绍pptwordpress 导出导入文章
  • 青岛专业网站建设推广报价网站版面设计方案
  • 怎么修改公司网站图片张家港网站制作服务
  • 龙岗外贸网站制作图片生成链接网站
  • 美容 北京 公司 网站建设昆明网站建设天猫运营
  • ps制作网站logo怎么增加网站流量
  • 东八区网站建设中信建设有限责任公司内江分公司
  • 为什么有些网站更新的信息看不到有赞商城网站建设
  • 怎么用word做一个网站综合性门户网站列举
  • 福州网站设计外包书城网站开发
  • 宝安电子厂做高端网站一键优化为什么不能100
  • 食品网站建设规划书比较好的响应式网站
  • 荷城网站制作网站开发工资怎么样
  • 深圳做网站服务商免费企业名录搜索软件
  • h5营销型网站跨境网络服务
  • 平面排版网站什么是网络营销的渠道策略
  • 100m的光纤可以做网站吗云南省建设学校网站
  • 网站文章不收录怎么做电脑网站与手机的区别
  • 集团网站建设的好处个人html网站