每 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 中的所有记录?

100天精通Python(数据分析篇)——第55天:Pandas之DataFrame对象大总结

实时 Hive 数据转换?

hive学习08天-一次hvie面试题

通过 pig 脚本删除 hive 表分区

挑战100天不停更hive sql第24天 -累计去重