如何在 Java 中对 Hive 进行异步调用?

2024-03-03

我想以异步方式在服务器上执行 Hive 查询。 Hive 查询可能需要很长时间才能完成,因此我不想阻止调用。我目前正在使用 Thirft 进行阻塞调用(在 client.execute() 上阻塞),但我还没有看到如何进行非阻塞调用的示例。这是阻止代码:

        TSocket transport = new TSocket("hive.example.com", 10000);
        transport.setTimeout(999999999);
        TBinaryProtocol protocol = new TBinaryProtocol(transport);
        Client client = new ThriftHive.Client(protocol);
        transport.open();
        client.execute(hql);  // Omitted HQL

        List<String> rows;
        while ((rows = client.fetchN(1000)) != null) {
            for (String row : rows) {
                // Do stuff with row
            }
        }

        transport.close();

上面的代码缺少 try/catch 块以保持简短。

有谁知道如何进行异步调用? Hive/Thrift 可以支持吗?有没有更好的办法?

Thanks!


AFAIK,在撰写本文时 Thrift 不会生成异步客户端。原因如此链接中所解释here http://jnb.ociweb.com/jnb/jnbJun2009.html(“异步”的搜索文本)是 Thrift 是为假设延迟较低的数据中心而设计的。

不幸的是,正如您所知,调用和结果之间经历的延迟并不总是由网络引起的,而是由正在执行的逻辑引起的!我们从 Java 应用程序服务器调用 Cassandra 数据库时遇到这个问题,我们希望限制总线程数。

摘要:现在您所能做的就是确保您有足够的资源来处理所需数量的阻塞并发线程,并等待更有效的实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Java 中对 Hive 进行异步调用? 的相关文章

随机推荐

  • 从 C DLL 到 .NET 的接口

    我有一个用 C 编写的遗留 DLL 我想从 C NET 应用程序调用它 问题是 C DLL 的 DLL 接口相当复杂 是这样的 declspec dllexport void stdcall ProcessChunk void p proc
  • 如何在 Mac OS X Snow Leopard 中运行 XUL 应用程序?

    我正在尝试在 Mac OS X 中创建 XUL Hello World 应用程序 我从以下位置下载 XULRunnerhere http releases mozilla org pub mozilla org xulrunner rele
  • 从使用 (WHERE) 条件选择的行中获取上一行和下一行

    例如我有这样的说法 my name is Joseph and my father s name is Brian 该语句按单词拆分 如下表 ID word 1 my 2 name 3 is 4 Joseph 5 and 6 my
  • JAX-RS 中必需的 @QueryParam(以及在缺少 @QueryParam 时该怎么做)

    我部署了一个网络服务组件JBoss 应用服务器 7使用RETEasy JAX RS执行 是否有注释可以声明必需的 强制的 查询参数参数在JAX RS 如果没有 处理缺少此类参数的情况的 标准 方法是什么 当使用所有强制参数正确调用时 我的
  • 亚马逊 EC2 延迟

    同一区域中一对 Amazon EC2 实例之间的简单连接的预期延迟是多少 Thanks 延迟应类似于同一 LAN 中两台计算机的延迟 只需确保在连接两个映像时使用的是私有 IP 而不是公共 IP
  • Java ProcessBuilder:引号内有空格

    我正在使用 ProcessBuilder 运行 FFMPEG 来转换和标记我的一些 MP3 文件 在 bat 文件中手动使用以下内容可以按预期工作 E Dokumente workspace MusicBot ffmpeg bin ffmp
  • 使用scrapyd部署项目出错

    我的项目文件夹中有多个蜘蛛 并且希望立即运行所有蜘蛛 因此我决定使用 scrapyd 服务运行它们 我开始这样做是因为看到here http scrapy readthedocs org en 0 7 topics scrapyd html
  • Django - URL 模式正则表达式不匹配带重音的字符串参数

    我在将带重音符号的字符串参数传递到 Django 应用程序时遇到一些问题 我有以下网址模式 url r galeria P
  • openpyxl - 覆盖数据表并保留数据透视表

    我已经看到了这个问题的一些答案 但没有一个有效 例如 如何使用 openpyxl 写入现有 Excel 文件而不破坏公式 https stackoverflow com questions 20262448 how to write to
  • 如何关闭selenium运行时弹出的窗口?

    我想关闭弹出窗口 已知窗口名称 然后返回到原始窗口 我该怎么办 如果我无法获得窗口中关闭按钮的常量 那么有什么一般行为可以达到目标吗 使用WebDriver 用Java显示 你可以做这样的事情 instantiate your driver
  • .NET 中“托管”资源与“非托管”资源是什么意思?

    NET 中术语托管资源和非托管资源是什么意思 他们是如何出现的 术语 非托管资源 通常用于描述某些事物不直接受垃圾收集器控制 例如 如果您打开到数据库服务器的连接 这将使用服务器上的资源 用于维护连接 以及客户端计算机上可能的其他非 net
  • Integer.Parse 与 CInt

    基本上这两个我都用过Integer Parse and CInt https msdn microsoft com en us library s2dy91zy aspx在我的大多数日常编程任务中 但我对两者之间的区别有点困惑 有什么区别I
  • 跨子域的 ASP.NET 身份 Cookie

    对于表单身份验证 我在 web config 中使用了它 注意域属性
  • 使用 golang.org/x/oauth2 进行 golang Facebook 身份验证

    我正在尝试使用以下方法编写一个简单的程序golang org x oauth2包裹 但我似乎无法用代码交换访问令牌 以下错误有点误导 因为它表示授权代码已被使用 但每次调用登录对话框时我都会看到一个新代码 我是 golang 新手 我可能会
  • 诊断“请求超时”HttpExceptions 有进展吗?

    我遇到了与这篇文章中描述的相同的问题 诊断 请求超时 HttpException https stackoverflow com questions 441792 diagnosing request timed out httpexcep
  • 如何在 jqGrid 处理之前更改从服务器接收的数据

    我想要实现的场景 我从服务器检索一些数据 我循环数据并添加 更改某些字段的值 数据显示在网格中 用户在本地编辑数据 完成后 用户将整个网格数据提交到服务器 我如何尝试实现它 我做了一个 jqGridloadonce true editurl
  • 按优先级和组值对结果进行排序,然后过滤结果

    这是我的 DynamoDB 当前数据 我的目标是创建一个查询 该查询过滤组集中的结果 类似于 默认 然后按优先级排序 然后将结果过滤到loggedIn true和status idle的结果 在 SQL 中它会是这样的 SELECT FRO
  • 如何使用 JavaScript 防止屏幕休眠

    我有一个用例 我们不希望正在进行测试的用户在测试时睡眠超时 即 3 小时 我正在查看 nosleep js 但我遇到了 cpu 过度使用问题 因为它在 Windows 中无法工作 我想知道考试应用程序是如何做到这一点的 以及 YouTube
  • 如何在詹金斯中替换摩卡UTF8复选标记符号

    当我在詹金斯中运行摩卡测试时 在控制台输出上我可以看到 而不是 检查标记 utf 8 字符 如何将这些符号替换为人类可读的格式 修改默认报告者 最简单的方法 修改默认报告者 https github com mochajs mocha bl
  • 如何在 Java 中对 Hive 进行异步调用?

    我想以异步方式在服务器上执行 Hive 查询 Hive 查询可能需要很长时间才能完成 因此我不想阻止调用 我目前正在使用 Thirft 进行阻塞调用 在 client execute 上阻塞 但我还没有看到如何进行非阻塞调用的示例 这是阻止