mysql - 通过连接提高Hive查询的性能

标签 mysql hadoop hive hiveql

hive -e "select e.school_id, e.school_name, e.school_location  from
(select  r.college_id, r.college_name
from
    College r
where
    college_id = '6789') tab1
full outer join
(select e.school_id, e.school_name, e.school_location 
 from  university
 lateral view explode(school) encTable as e
 where
     school_id = '12345') tab2
   on tab1.school_id=tab2.college_id
   limit 4 " > result456.csv

我目前正在运行一个配置单元查询,其中我要加入collecge_id与school_id匹配的2个表的大学和学院
大学,因为我在大学和学院都有更多数据,所以这需要花费更多时间来执行
是否需要任何更新来提高此查询的性能

在这里,它先收集来自College再到School的所有数据,然后再比较 tab1.school_id = tab2.college_id
我感觉表现很差

还有什么其他方法可以提高性能来获取相同的数据

最佳答案

hive 查询的群集处理响应缓慢可能有多种原因。
您可能需要考虑的一些优化因素如下:

  • 您可能需要考虑对两个表中的数据使用“桶装”,这可能有助于在使用 map 联接时进行联接操作。如果school_id和college_id是唯一值,则不适合对数据进行分区(分区表功能)。
    请引用链接以获取有关联接优化的更多信息-https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinOptimization
  • 您可能还需要考虑查询的并行处理优化。请引用以下链接以获取有关语法的更多详细信息-https://community.hortonworks.com/content/supportkb/48919/how-can-i-set-hive-to-run-in-parallel-execution-to.html
  • 我可以在您的配置单元查询中看到您使用的是“完全外部连接”,这非常昂贵。由于您没有提到需求和样本数据,因此如果我们可以避免使用完全外部联接来获得期望的结果,则无法进行注释。
  • 根据数据大小,您可能还需要调整集群的适当块大小。
  • 您能否也请尝试研究化简器的数量,建议您将其简化为 map 的0.95至1.75倍。此外,Reducer应该具有足够的数据来处理大约块大小,并且至少需要5到15分钟。
  • 最好的方法是使用“EXPLAIN”或“Illustrate”命令(取决于您的配置单元版本)来查看计划如何用于处理查询。它将为您提供更多优化方面的见识。

  • 没有硬性规定可以为所有群集获得优化的配置。您可能需要尝试并测试其他选项才能达到最佳水平。

    关于mysql - 通过连接提高Hive查询的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880210/

    相关文章:

    apache-spark - 使用USING和PARTITIONED BY子句的spark hive create table的有效语法是什么?

    json - java.lang.ClassCastException : org. apache.hadoop.hive.ql.io.orc.OrcStruct 无法转换为 org.apache.hadoop.io.Text。 json serde 错误

    jar - 为 hadoop 工具设置额外的类路径

    hadoop - 将为 Hive 中的分区表创建多少个映射器和缩减器

    database - MySQL内连接问题或其他同等解决方案

    android - 尝试使用 volley 在远程数据库 mysql 上创建新记录时应用程序崩溃

    java - 如何在 Mac 上安装 apache mahout?

    hadoop - Oozie + Sqoop : JDBC Driver Jar Location

    php - 如何检查注册页面中给定的用户名是否存在于两个表中的某些中

    mysql - MySQL崩溃恢复如何恢复数据