jjzjj

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

coder 2024-01-08 原文

我是 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/

有关java - Hadoop 查询、日期、循环、BASH 或 Java的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  3. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  4. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  5. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  6. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  7. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  8. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  9. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  10. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

随机推荐