美文网首页
hive自动化统计标签表非零值

hive自动化统计标签表非零值

作者: 堂哥000 | 来源:发表于2022-05-17 11:05 被阅读0次

一键解决大标签表统计sql的编写与结果格式的调整

统计SQL生成脚本
table_name=$1

concat_data() {

   file_name=`file_name_txt $1`
   
   first_field=`echo ${file_name}|awk '{print $1}'|sed 's/ //g'`
   
   for i in ${file_name}
   do
   is_field=$i
   
   nf_field=`echo ${is_field} |awk -F',' '{print NF-1}'`

   if [[ $is_field != ${first_field} ]];then
     a=",sum(case when $i > '0' then 1 else 0 end ) as $i""_true"
     c=",sum(case when $i <= '0' then 1 else 0 end ) as $i""_false"
     echo $a
     echo $c
   elif [[ ${i} = ${first_field} ]];then
    echo "sum(case when $i > '0' then 1 else 0 end ) as $i""_all"
   else
     b=",${i}"
     echo $b
   fi 
done
}


file_name_txt(){

hive_data=`hcat -e "desc $1"|awk '{print $1}'`

for i in ${hive_data} 
do 
if [[ $i != '#' ]];then
   echo $i 
else 
   exit 0
fi 
done
}
  • 生成可执行SQL文件 sh test_cnt.sh "表名" > label_cnt.sql
spark运行SQL文件配置,下载表头
    /usr/local/spark-2.4.3-bin-hadoop2.7/bin/spark-sql --driver-memory 8g \
    --executor-memory 8g \
    --executor-cores 3 \
    --conf spark.yarn.executor.memoryOverhead=6g \
    --conf spark.driver.memoryOverhead=2g \
    --conf spark.sql.autoBroadcastJionThreshold=500485760 \
    --conf spark.network.timeout=800000 \
    --conf spark.driver.maxResultSize=4g \
    --conf spark.rpc.message.maxSize=500 \
    --conf spark.rpc.askTimeout=600 \
    --conf spark.executor.heartbeatInterval=60000 \
    --conf spark.dynamicAllocation.enabled=true \
    --conf spark.shuffle.service.enabled=true \
    --conf spark.dynamicAllocation.minExecutors=2 \
    --conf spark.dynamicAllocation.maxExecutors=150 \
    --conf spark.dynamicAllocation.executorIdleTimeout=100s \
    --conf spark.dynamicAllocation.cachedExecutorIdleTimeout=300s \
    --conf spark.scheduler.mode=FAIR \
    --conf spark.dynamicAllocation.schedulerBacklogTimeout=2s \
    --conf spark.default.parallelism=400 \
    --conf spark.sql.shuffle.partitions=400 \
    --conf spark.sql.broadcastTimeout=1800 \
    --conf spark.maxRemoteBlockSizeFetchToMem=512m \
    --hiveconf hive.cli.print.header=true \
    --hiveconf hive.resultset.use.unique.column.names=false \
    --name "标签统计" \
    --queue "root.users.gs.gs" \
    -f "$1"

统计结果文件生成 sh spark_f label_cnt.sql > res_cnt_mid.txt

运行结果行转列
line=`cat $1|awk '{print NF}'|head -n 1`
for n in `seq 1 ${line}`
do
   cat  $1 |awk '{print $'''$n'''}' | xargs 
done

生成最终结果 sh hang_to_lie.sh res_cnt_mid.txt > output_cnt.txt

相关文章

  • hive自动化统计标签表非零值

    一键解决大标签表统计sql的编写与结果格式的调整 统计SQL生成脚本 生成可执行SQL文件 sh test_cn...

  • 【转载】hive使用技巧

    自动化动态分配表分区及修改hive表字段名称 1、自动化动态分配表分区 set hive.exec.dynamic...

  • linux常用命令及使用场景

    1.统计集群中的表的大小 在hive里边建的表都存放在集群的(/user/hive/warehouse) hado...

  • Hive wordcount

    一 使用Hive CLI (old)命令行工具操作HiveQL 进入hive cli 创建统计表 导入数据 可...

  • Hive分桶

    Hive分桶 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于hive中每一个表、分区都可以进一...

  • PySpark写数到 Hive 动态分区

    首先,写入动态分区表,要设置一些严格模式的参数,将其设置为非严格模式 插入非分区 Hive 表 对于插入 Hive...

  • 电商项目(Hive实现)

    外部表的使用 基于ETL的数据加载到数据仓库 使用Hive进行统计分析*对比 MR 和 Hive 查看表: MAN...

  • 基于OOS批量修改资源标签值

    场景 当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: ...

  • hive基础语法

    目录 Hive安装和启动 Hive表操作-分区表 Hive表操作-复杂类型操作 Hive 查询语句 Zepplin...

  • Spark报错:java.io.notserializablee

    个人场景: 在遍历hive表数据时通过某个字段去获取hbase中特定字段的值,结合hive表中的一些字段再整合为一...

网友评论

      本文标题:hive自动化统计标签表非零值

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