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