Hive常见问题及处理方法

来源:互联网 发布:淘宝企业店铺 申请 编辑:程序博客网 时间:2024/05/18 12:29
  1. Hive是什么
    Hive是基于Hadoop的一个数据仓库工具,应该是整个Hadoop系统中最常使用的一个功能组件,通过内部的关系型元数据库,将存储在hdfs中的文件有效的管理起来,并提供类SQL的数据库操作语言,满足大数据集的统计分析工作。关于Hive的架构原理和基本操作部分,可以参考如下这篇文章(http://www.cnblogs.com/wangrd/p/6275162.html)

  2. Hive操作中常见的问题及处理方法
    1)如何在脚本中嵌入hive操作语句
    命令:hive -e “语句块”
    案例:
    hive -e “set io.sort.mb=10; select did,mac,made,count(*) from table_name where date between ‘2016-06-01’ and ‘2016-06-30’ and io =’in’ and (did is not null and did<>”) group by did,mac,made ”
    说明:语句块中,各个语句之间用分号分隔

    2)大数据集情况下,hive查询提示” Java heap space”错误
    解决办法:调整hive的io.sort.mb参数(默认值为100),使其值在10-80之间
    命令:set io.sort.mb=10

    3)Hive中空值处理
    hive中空值有两种形态:null 和’ ‘,其存储规则为:若字段类型为string,则null的存储值为\N, ’ ‘的存储值为本身,其他字段类型如int的存储值均为\N;对于string类型,条件is null 查出来的是\N的数据;而条件 =’’,查询出来的是”“的数据
    hive可自定义字符来表示null,比如用’ ‘表示null,实现空值的存储统一.
    命令如下:
    alter table tab_name set serdeproperties(‘serialization.null.format’=”)
    空值条件查询(针对字符串):
    select b.id,b.name from b where b.name<>’’ and b.name is not null;

    4)查看hive表数据的存储路径
    指令:show create table table_name;
    实例:
    (http://img.blog.csdn.net/20170915151428947?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenlsb3ZlMjAxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    5)Load hdfs文件时报SemanticException [Error 10028]错误
    原因说明:Line 1:17 Path is not legal,Please check that values for params “default.fs.name” and “hive.metastore.warehouse.dir” do not conflict.
    hive配置文件被更改导致
    解决办法:Load 文件时,添加Path的绝对路径即可,且主机IP需用别名。
    load data inpath ‘hdfs://master1:9000/home/liuh3/router_mac/part-00000’ into table router_m;

    后续遇到新的问题再补充。。

原创粉丝点击