每 100 天读取一次数据,直到我们在 hive 中获得完整的数据
Posted
技术标签:
【中文标题】每 100 天读取一次数据,直到我们在 hive 中获得完整的数据【英文标题】:read data for every 100 days untill we get the complete data in hive 【发布时间】:2018-10-08 16:56:11 【问题描述】:我正在使用 bash 脚本从 prod 复制数据以在 hive 中进行测试以进行测试。当我为表这样做时,我收到了内存堆问题。 为了解决这个问题,我计划从 rundate(我执行脚本的那一天)到每 100 天数据可用的那一天读取数据,以避免这个问题。你能告诉我如何使用 bash 来实现这一点,请告诉我除了设置内存之外是否还有其他方法
【问题讨论】:
分享和示例,以及您到目前为止所尝试的内容。 嗨 Lohit,感谢您的回复。在将数百万条记录从 prod db 的表 A 复制到表 A ofTest db 后,我试图将 prod 的计数与 test 进行比较。因为我在执行查询时看到问题,所以我尝试从今天运行日期到数据可用日期每 100 天计算一次数据,并将与测试数据库进行比较以确保复制所有数据。 【参考方案1】:您基本上需要从 shell 运行 HiveQL(.hql) 脚本。
创建一个 .hql
脚本,查询仅提取最近 100 天的数据。
example.hql
select * from my_database.my_table
where insert_date BETWEEN '2018-07-01' AND '2018-10-01';
现在您可以从 hive shell 调用此脚本:
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脚本。
【讨论】:
以上是关于每 100 天读取一次数据,直到我们在 hive 中获得完整的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何一次获取 100 条记录,直到使用 Spring JPA 的 oracle 中的所有记录?