美文网首页
Hive的常用配置及错误处理

Hive的常用配置及错误处理

作者: yepeng05 | 来源:发表于2018-09-29 16:15 被阅读0次

    常用配置记录

    安装指定版本的MySQL

    在Hive与MySQL的集成过程中,如果想通过yum源来安装MySQL,在某些时候我们希望能够安装指定版本的MySQL,比如 MySQL 5.7

    # vim  /etc/yum.repos.d/mysql-community.repo
    # 参考地址 https://dev.mysql.com/downloads/repo/yum/
    # Enable to use MySQL 5.7
    # 对应如果 CentOS 7就将baseurl中6改为7
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    然后执行

    yum install mysql-community-server
    

    Hive建表时comment使用中文

    1. 首先确保在hive-site.xml中配置 jdbc url 时添加了 characterEncoding=utf-8 选项
    2. 其次的明白的是 comment 出现的位置
    1. 表字段层面上的comment,涉及的表为 COLUMNS_V2 表下的 COMMENT 字段(可以将字段长度适当调大)
    2. 表层面上的comment,涉及的表为 TABLE_PARAMS 表下的 PARAM_VALUE 字段
    3. 分区层面上的comment,涉及的表为 PARTITION_KEYS 表下的 PKEY_COMMENT 字段
    

    对于上述涉及的表的字段,可以通过IDE(比如Navicat)将这些字段的字符集由默认的latin1 改为 utf8,当然这些操作也可以通过SQL语句来执行

    alter table COLUMNS_V2 modify column COMMENT varchar(4000) character set utf8;
    alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
    

    显示当前数据库及表字段

    # hive-site.xml 添加以下参数
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
    
    <property> 
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
    

    常见错误处理

    Hive启动时找不到jar包的错误警告

    Hive在spark2.0.0启动时无法访问spark-assembly-.jar,这是由于Spark升级到 Spark 2 以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-.jar已经不存在,所以hive没有办法找到这个JAR包
    解决方案如下

    vim $HIVE_HOME/bin/hive
    sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar` 改为 sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`
    

    使用客户端连接MySQL是报错

    连接MySQL时,提示Table ‘performance_schema.session_variables’ doesn’t exist

    # 第一步
    mysql_upgrade -u root -p --force
    # 重启服务
    systemctl restart mysqld.service
    

    配置Hive Shell显示当前数据库

    配置本地图形客户端连接Hive

    配置Python操作Hive(类数据库方式)

    https://github.com/dropbox/PyHive
    安装pyhive

    pip install pyhive[hive]
    

    DB-API方式的用法

    # 同步的方式操作Hive
    from pyhive import hive
    cursor = presto.connect('localhost').cursor()
    cursor.execute('SELECT * FROM my_awesome_data LIMIT 10')
    print cursor.fetchone()
    print cursor.fetchall()
    

    当然借助于pyspark操作Hive也是可以的

    from pyspark.sql import HiveContext
    from pyspark import SparkConf, SparkContext
    
    sc = SparkContext()
    hiveContext = HiveContext(sc)
    
    sql = "select * from table limit 3"
    data = hiveContext.sql(sql_all)
    data.show()
    
    sc.stop()
    

    hive jdbc 请参考
    https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC

    相关文章

      网友评论

          本文标题:Hive的常用配置及错误处理

          本文链接:https://www.haomeiwen.com/subject/ijkboftx.html