hive数据表结构导出到文件

通过hive的desc命令把数据表字段写到文件中,方便外部数据处理。

#!/bin/bash
    
set -o nounset
    
if [[ $# -eq 0 ]]; then
    echo need at least 1 paramter for hive table name
    exit 1
fi      
    
HIVE_HOME=${HIVE_HOME:-/sysdir/hive-0.11}
    
tablename="$1"
tabledef="stdin : "
seperator=""
${HIVE_HOME}/bin/hive -e "desc ${tablename}" | awk '{print $1}' > gentabledeftemp.txt 
while read fieldline
do
    tabledef="${tabledef}""${seperator}""${fieldline}"
    seperator=","
    #echo "${tabledef}"
done < gentabledeftemp.txt
echo "${tabledef}"

while [[ $# -gt 0 ]]
do
    tablename="$1"
    tabledef="${tablename} : "
    seperator=""
    ${HIVE_HOME}/bin/hive -e "desc ${tablename}" | awk '{print $1}' > gentabledeftemp.txt
    while read fieldline
    do
        tabledef="${tabledef}""${seperator}""${fieldline}"
        seperator=","
        #echo "${tabledef}"
    done < gentabledeftemp.txt
    echo "${tabledef}"
    shift
done

rm gentabledeftemp.txt


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
⼤数据场景化解决⽅案 ⼤数据场景化解决⽅案 1.⼤数据的概念 维基百科的定义: ⼤数据是指利⽤常⽤软件⼯具捕获、管理和处理数据所耗时间超过可容忍时间的数据集。 2.⼤数据主流技术 数据采集: 使⽤Flume,可进⾏流式⽇志数据的收集。 使⽤Sqoop可以交互关系型数据,进⾏导⼊导出数据。 使⽤爬⾍技术,可在⽹上爬取海量⽹页数据。 数据存储与管理: ⼤数据利⽤分布式⽂件系统HDFS、HBase、Hive,实现对结构化、半结构化和⾮结构化数据的存储和管理。 数据处理与分析: 利⽤分布式并⾏编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析。 3.场景化解决⽅案 在⾯对不同的场景时,会使⽤不同的⼤数据组件去解决处理,主要有如下⼤数据场景化解决⽅案。 离线批处理 实时检索 实时流处理 融合数仓 3.1 离线批处理 离线批处理,是指对海量历史数据进处理和分析,⽣成结果数据,供下⼀步数据应⽤使⽤的过程。离线批处理对数据处理的时延要求不 ⾼,但是处理的数据量较⼤,占⽤的计算存储资源较多,通常通过MR作业、Spark作业或者HQL作业实现。 离线批处理的特点: 处理时间要求不⾼ 处理数据量巨⼤ 处理数据格式多样 占⽤计算存储资源多 离线处理常⽤的组件: HDFS:分布式⽂件系统,为各种批处理引擎提供数据存储,可以存储各种⽂件格式数据。 YARN:资源调度引擎,为各种批处理引擎提供资源调度能⼒。 MapReduce:⼤数据批处理引擎,⽤于处理海量数据,但是处理速度较慢。 Hive:⼤数据SQL批处理引擎,⽤于处理SQL类批处理作业,但是处理速度较慢。 Spark:基于内存的数据处理引擎,适合海量数据,处理速度⾼效。 Spark SQL:Spark处理结构化数据的⼀个模块。 HDFS介绍 HDFS(Hadoop Distributed File System)基于Google发布的GFS论⽂设计开发。 其除具备其它分布式⽂件系统相同特性外,HDFS还有⾃⼰ 特有的特性: ⾼容错性:认为硬件总是不可靠的。 ⾼吞吐量:为⼤量数据访问的应⽤提供⾼吞吐量⽀持。 ⼤⽂件存储:⽀持存储TB-PB级别的数据。 HDFS适合:⼤⽂件存储与访问 流式数据访问 HDFS不适合:⼤量⼩⽂件存储 随机写⼊ 低延迟读取 HDFS回收站机制: 在HDFS⾥,删除⽂件时,不会真正的删除,其实是放⼊回收站,回收站⾥的⽂件可以⽤来快速恢复误删⽂件。 可以设置⼀个时间阀值(单位:分钟),当回收站⾥⽂件的存放时间超过这个阀值或是回收站被清空时,⽂件才会被彻底删除,并且 释放占⽤的数据块。 Hadoop回收站trash,默认是关闭的,若开启需要修改配置⽂件core-site.xml。 Hive概述 Hive是基于Hadoop的数据仓软件,可以查询和管理PB级别的分布式数据。 Hive特性: 灵活⽅便的ETL (Extract/Transform/Load)。 ⽀持MapReduce、Tez、Spark多种计算引擎。 可直接访问HDFS⽂件以及HBase。 易⽤易编程。 Hive函数: 查看系统函数的⽤法:show functions; 显⽰函数的⽤法:desc function upper; 详细显⽰函数的⽤法:desc function extended upper; 当Hive提供的内置函数⽆法满⾜业务处理需要时,此时就可以考虑使⽤⽤户⾃定义函数,编写处理代码并在查询中使⽤。 UDF(User-Defined-Function) ⽤于接收单个数据⾏,并产⽣⼀个数据⾏作为输出。 UDAF(User-Defined Aggregation Function) ⽤于接收多个数据⾏,并产⽣⼀个数据⾏作为输出。 UDTF(User-Defined Table-Generating Functions) ⽤于接收单个数据⾏,并产⽣多个数据⾏作为输出。 Hive调优 数据倾斜 数据倾斜指计算数据的时候,数据的分散度不够,导致⼤量的数据集中到了⼀台或者⼏台机器上计算,这些数据的计算速度远远低于平均 计算速度,导致整个计算过程过慢。 ⽇常使⽤过程中,容易造成数据倾斜的原因可以归纳为如下⼏点: group by distinct count(distinct xx) join 调优参数: 在map中会做部分聚集操作,效率更⾼但需要更多的内存。 set hive.map.aggr=true; 此时⽣成的查询计划会有两个MRJob,可实现数据倾斜时负载均衡。 set hive.groupby.skewindata=true; 当连接⼀个较⼩和较⼤的时候,把较⼩的直接放到内存中去,然后再对较⼤的进⾏map操作。 set hive.auto.convert.join=true

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值