每100天读取一次数据,直到获得完整的数据为止

时间:2018-10-08 16:56:11

标签: database bash unix hive bigdata

我正在使用bash脚本将数据从产品复制到测试中以进行测试。当我为一个表这样做时,我收到了一个内存堆问题。 为了解决这个问题,我计划从运行日期(执行脚本的那一天)到每100天可用该数据的那一天读取数据,以避免出现此问题。您能否让我知道如何使用bash来实现这一目标,并且请让我知道是否除了设置内存以外还有其他方法

1 个答案:

答案 0 :(得分:0)

您基本上需要从shell运行HiveQL(.hql)脚本。

使用查询仅提取最近100天的数据来创建.hql脚本。

example.hql

select * from my_database.my_table 
where insert_date BETWEEN '2018-07-01' AND '2018-10-01';

现在您可以从配置单元外壳调用此脚本: hive -f example.hql

或者您可以创建一个Shell脚本并在其中执行查询。 run.sh

    #!/bin/bash
    hive -e "select * from my_database.my_table 
    where insert_date BETWEEN '2018-07-01' AND '2018-10-01'" >select.txt

    result=`echo $?`
    if [ $result -ne 0 ]; then
    echo "Error!!!!"
    echo "Hive error number is: $result"
    exit 1
    else
    echo "no error, do your stuffs"
    fi

然后通过sh run.sh执行shell脚本。