zoukankan      html  css  js  c++  java
  • hive的配置和HQL的查询优化

    hive属于一种类SQL数据库

    配置信息

     pwd =>/opt/bigdata/hadoop/hive110/conf

     hive110/conf/hive-site.xml配置

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
      <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/opt/bigdata/hadoop/hive110/warehouse</value>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionURL</name>mysql
        <value>jdbc:mysql://20.0.0.100:3306/hive110?createDatabaseIfNotExist=true</value>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
      </property>
      <!--本地连接,code为mysql密码-->
      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>code</value>
      </property>
      <property>
        <name>hive.server2.thrift.client.user</name>
        <value>root</value>
      </property>
      <property>
        <name>hive.server2.thrift.client.password</name>
        <value>root</value>
      </property>
    </configuration>
    

     将mysql-java驱动拷贝到 hive110/lib中

      cp /opt/install/hadoop/mysql-connector-java-5.1.38.jar ./

     # hive环境变量

      export HIVE_HOME=/opt/bigdata/hive110
      export PATH=$PATH:$HIVE_HOME/bin:$PATH

     # 初始化hive
      ./schematool -dbType mysql -initSchema

      # 启动hive访问hiveserver(hive110/bin)

       ./hive
      nohup hiveserver2 >/dev/null 2>&1 & #启动server2服务
      beeline -u jdbc:hive2://200.0.0.100:10000

    取消繁琐的日志信息

       临时beeline  set hive.server2.logging.operation.level=NONE;

      永久配置 

    <property>
    	<name>hive.server2.logging.operation.enabled</name>
    	<value>true</value>
    </property>
    <property>
    	<name>hive.server2.logging.operation.level</name>
    	<value>NONE</value>
    </property>
    <property>
    	<name>hive.server2.logging.operation.log.location</name>
    	<value>/opt/bigdata/hadoop/hive110/oprlog</value>
    </property>
    

    查询优化(原理:减少mapreduce)

    数据倾斜(key 不均,业务数据本身特性,建表设计,SQL命令)

    1、小表join大表——mapjoin map端完成join
      select /*+MAPJOIN(smalltalbe)*/ key,...from smalltable join bigtable on ...
         --hive0.11版本之后默认开启
         hive.auto.convert.join=true 默认
         hive.mapjoin.smalltable.filesize=2500000(25Mb) 默认(可以改变小表的上限值 最多为一个文件片(128Mb)大小)

    2、大表join大表单key值0或null居多(改null/0键值)
      解决方案:--将key值为0或者NULL的key修改为自定义的key或者通过系统自动生成的时间戳或随机数
        select if(field is NULL,'null',field)
        select if(field is NULL,unix_timestamp(),field)
        select if(field)is NULL,rand(),field)

    3、group by 维度过小 ,某分组数据过多
      hive.map.aggr=true map端完成conbiner
      hive.groupby.skewindata=true  会再开一个mapreduce 第一个mapreduce做conbiner 然后作为第二个mapreduce的入口

    4、count distinct(sum(1) group by... 来替换) null值单独处理后union
      sum(1) group by... 来替换

  • 相关阅读:
    天梯赛练习 L3-011 直捣黄龙 (30分) dijkstra + dfs
    PAT甲级练习 1087 All Roads Lead to Rome (30分) 字符串hash + dijkstra
    天梯赛练习 L3-010 是否完全二叉搜索树 (30分) 数组建树模拟
    天梯赛练习 L3-008 喊山 (30分) bfs搜索
    天梯赛练习 L3-007 天梯地图 (30分) Dijkstra
    1018 Public Bike Management (30分) PAT甲级真题 dijkstra + dfs
    PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS
    课堂实验(计算1!+2!+...+100!)
    39页作业第7题
    39页作业(还款年限—月还款额表)
  • 原文地址:https://www.cnblogs.com/afeiiii/p/13582276.html
Copyright © 2011-2022 走看看