gpt4 book ai didi

java - Hadoop 查询、日期、循环、BASH 或 Java

转载 作者:可可西里 更新时间:2023-11-01 15:35:50 30 4
gpt4 key购买 nike

我是 Hadoop、Linux 的新手,并且 15 年多没有用 Java 编写代码,所以我通常只使用 Hue 来运行查询。我的问题是我正在尝试对 12 个月的数据运行一个基本的选择查询,但是,由于数据集的大小和应用的读取阈值,这个查询总是会失败。因此,我需要每周/每月运行相同的查询,将结果插入预先存在的表中,然后将它们聚合到我最后的 12 个月期间。

原始查询:-

    SELECT col1, col2, col3
FROM foo
WHERE local_date >= '2013-09-01'
AND local_date < '2014-09-01'

可能的新脚本(PLSQL 格式):-

    DECLARE dtStart DATE;
DECLARE dtEnd DATE;

SET dtStart = (CURRENT_DATE - 1 YEAR) + 1 DAYS - DAY(CURRENT_DATE);
SET dtEnd = CURRENT_DATE + 1 DAYS - DAY(CURRENT_DATE);

WHILE dtStart < dtEnd THEN DO

INSERT INTO test
SELECT col1, col2, col3
FROM foo
WHERE local_date >= dtStart
AND local_date < dtStart + 7 DAYS;

IF dtStart = dtEnd THEN
SET dtStart = dtStart + 1 DAYS;
ELSEIF dtEnd - dtStart < 7 THEN
SET dtStart = dtStart + (dtEnd - dtStart) DAYS;
ELSE
SET dtStart = dtStart + 7 DAYS;
END IF;
END WHILE;

SELECT col1, col2, SUM(col3)
FROM test
GROUP BY col1, col2;

有人告诉我这在 Hue 中是不可能的。那是对的吗?这可以在 BASH 中完成,还是我需要创建一些 Java 代码?如您所见,我也希望日期是动态的,但是,我相信 Hadoop 中的日期函数无法做到这一点。

如有任何帮助,我们将不胜感激,尤其是 BASH 或 Jave 中的示例,它们会做一些类似的事情和/或进一步阅读的建议。

最佳答案

Hue 有时会因涉及大量数据的查询而失败。但是,不是执行选择查询,而是将整整一年的查询输出重定向到另一个表中,然后查看它是否有效。

或者,您可以使用 Hive 命令行客户端运行 uery。请在那里尝试一次,看看它是否有效。

您可以像这样在 shell 中使用它:

hive -e "SELECT col1, col2, col3 FROM foo WHERE local_date >= '2013-09-01' AND local_date < '2014-09-01'"

关于java - Hadoop 查询、日期、循环、BASH 或 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757394/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com