zoukankan      html  css  js  c++  java
  • 解决hive无法传参问题思路

    由于hive执行过程中参数必须写死,无法进行传递参数。利用shell脚本和java编程进行解决

    #!/bin/sh
    #date = `date -d -1days '+%Y-%m-%d'`
    if [ $# = "1" ]; then
    date=$1
    else
    date=`date -d -1days '+%Y-%m-%d'`
    fi

    echo $date

    #如果没传递参数的话,拿到前一天的时间

    cd /opt/cloudy/program/rpt_sale_daily

    #打开指定目录
    hiveF ./rpt_sale_daily.hql -date $date

    #执行hiveF 进行数据分析和抽取

    hive2mysql ./aa.property -date $date

    #把抽取的数据加载到mysql数据库中

    其中hiveF 和hive2mysql是利用java进行开发

    (hiveF ./rpt_sale_daily.hql -date $date)

    在hiveF中,java读取此hql脚本进行替换date字符,然后执行


    sql=`java -jar /opt/cloudy/lib/hiveF.jar $*`

    #执行java拿到sql命令
    echo $sql
    hive -e "$sql" -i /opt/cloudy/bin/hiveF-init.sql

    #hive -e 在shell命令行中执行hive命令 -i用于传递UDF

    (hive2mysql ./aa.property -date $date)

    java -jar /opt/cloudy/lib/hive2mysql.jar $*

    #执行jar命令替换参数并且在java中执行hive和mysql命令

    理解:其中核心在hiveF和hive2mysql的理解 hiveF负责分析本地HDFS的文件落地到hive得到数据结果 hive2mysql用于把hive数据转移到mysql中 (-i用于更好的管理UDF文件)
    ~

  • 相关阅读:
    堆排序算法
    二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
    hdoj1010 奇偶剪枝+DFS
    常见排序算法c++总结
    B
    C
    D
    E
    G
    F
  • 原文地址:https://www.cnblogs.com/yaohaitao/p/5404588.html
Copyright © 2011-2022 走看看