美文网首页
hive实战问题指南

hive实战问题指南

作者: 林挺挺 | 来源:发表于2020-10-27 11:03 被阅读0次

    hive常见问题指南

    函数使用

              1.lateral view explode的使用

              2.join操作

    hive设置

             1.压缩

                       中间压缩

                       最终输出结果压缩

              2.跨集群

    函数使用

    1.lateral view explode的使用

    在处理hive表的时候,遇到行转多列的需要,就需要lateral view explode。

    使用:这条语句仅限跟在表名之后,如果有where条件那就只能再搞个子查询了。

    explode()函数的参数必须为array类型。很多情况下,如果字段是字符型,也可以采用split函数的结果作为explode的输入。

    在某个字段上使用这个函数的时候,需要注意该字段是否存在null值。如果该字段为null值,这个explode操作之后整条记录会丢失。如果需要保证不丢失,那么lateral view outer explode就是最好的选择了,相应的字段会用null值填充。

    2.join操作

    对于 a left join b的情况,需要注意表b中参与join的字段是否存在重复。left join的结果记录条数应当和左表的条数一样多,但是当右表关联的字段存在重复的时候,会使得结果表记录条数变多,因为重复的字段会多次join。

    还要注意的一点是join的字段不要存在null值。这点很重要。如果在job的监控上发现reduce阶段有一个特别慢,除了数据倾斜等原因外,需要查看数据是否存在null值。

    hive设置

    1.压缩

    中间压缩

    set hive.exec.compress.intermediate=true;  --对中间数据进行压缩可以减少job中map和reduce任务间的数据传输量

    set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; --也可自行选择GZ压缩

    最终输出结果压缩

    set hive.exec.compress.output=true;

    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; --这里选择了GZ压缩

    2.跨集群

    a、要建有partition的表

    b、建表时location指定当前集群和数据路径(如果不希望自动加分区,则可以选择不写)

    c、加分区时location指定数据所在真实位置(host不能省)

    d、要删除表或分区要使其location指向本集群

    相关文章

      网友评论

          本文标题:hive实战问题指南

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