mysql - jooq 扩展现有方言。采用MySQL方言到apache Hive方言

标签 mysql hadoop hive cloudera jooq

我正在尝试使用 JOOQ 查询 Hive。 Hive SQL 方言与 MySQL 方言非常接近。 现在我遇到了这些问题:

  • Hive 支持 LIMIT N,但不支持 LIMIT N OFFSET K。 Dummy 解决方案 - 覆盖 select.limit(limit);

在 JOOQ 中解决此类问题的最佳实践是什么?

最佳答案

不幸的是,扩展 jOOQ 以彻底支持新的 SQL 方言并不是很简单。 jOOQ 的 API 随着时间的推移变得越来越广泛,支持大量标准和特定于供应商的 SQL 语法变体。虽然 Apache Hive 方言可能看起来与 MySQL 类似,但可能存在许多细微的差异,需要在 jOOQ 的内部实现。 LIMIT .. OFFSET 子句的不同实现只是问题之一。也就是说,将 jOOQ 与“未知”或“不受支持”的方言一起使用通常不是一个好主意。

解决方案:短期内

短期内,您可能需要修补 jOOQ 的渲染 SQL。最好的技术是使用 ExecuteListener,如下所述:

收到“renderEnd()”事件后,您将能够访问呈现的 SQL 并使用正则表达式或您喜欢的任何技术对其进行修改。

解决方案:从长远来看

从长远来看,如果/当#2337时可能会有更好的解决方案已实现(但我们可能不会实现)

关于mysql - jooq 扩展现有方言。采用MySQL方言到apache Hive方言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381401/

相关文章:

hadoop - mapreduce程序未在分布式模式下产生所需的输出

java - Hadoop:启动容器失败错误

sql - Hive - 是否可以提取常见选项以在其他脚本中重用?

mysql - 使用group_concat后如何计算以 ','分隔的列的长度

apache - 如何为 apache 做贡献?

c# - 删除最后一行以外的任何行后,如何对自动增量列值重新排序?

hadoop - cloudera Impalad实例如何工作?

hadoop - 在Hive的存储桶表中增量加载数据?

mysql - 如何检测 MySQL 查询中的非连续数字列?

MySQL多对多关系匹配