将 Slick 与 Kudu/Impala 一起使用

Posted

技术标签:

【中文标题】将 Slick 与 Kudu/Impala 一起使用【英文标题】:Using Slick with Kudu/Impala 【发布时间】:2019-04-22 19:21:45 【问题描述】:

Kudu 表可以通过 Impala 访问,因此它的 jdbc 驱动程序。多亏了它可以通过标准的 java/scala jdbc api 访问。我想知道是否可以使用 slick 。或者,如果没有其他支持 impla/kudu 的高级 scala db 框架。

【问题讨论】:

【参考方案1】:

Slick 可用于任何 JDBC 数据库

http://slick.lightbend.com/doc/3.3.0/database.html

【讨论】:

【参考方案2】:

至少,对我来说,Slick 与 Impala Kudu 并不完全兼容。使用 Slick,我无法修改数据库实体,无法创建、更新或删除任何项目。它仅适用于读取数据

【讨论】:

【参考方案3】:

您可以通过两种方式将 Slick 与任意 JDBC 驱动程序(和 SQL 方言)一起使用。

首先是使用低级别的 JDBC 调用。 SimpleDBIO 类使您可以访问 JDBC 连接:

val getAutoCommit = SimpleDBIO[Boolean](_.connection.getAutoCommit)

该示例来自Slick manual。

但是,我认为您对更高级别的工作更感兴趣。在这种情况下,对于 Slick,您需要实现自定义 Profile。如果 Impala 与现有数据库配置文件足够相似,您可以extend 现有配置文件并对其进行调整以解决任何差异。例如,这将允许您自定义如何为 Impala 格式化 SQL、如何表示时间戳、如何引用列名。 Porting SQL from Other Database Systems to Impala 上的文档将让您了解驱动程序中需要更改的内容。

如果不是,是否有任何其他支持 impla/kudu 的高级 scala db 框架。

似乎没有一个主流库支持 Impala 作为一项功能。话虽如此,Doobie documentation 提到了为 Hive 定制连接。因此,Doobie 可能值得快速尝试 Doobie,看看您是否可以查询和插入。

【讨论】:

以上是关于将 Slick 与 Kudu/Impala 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

教你如何快速掌握Kudu+Impala

客快物流大数据项目(七十五):使用impala创建kudu表

让数据告诉你未来:Spark Streaming + Kudu + Impala构建预测引擎

将 Scala Slick 与数据库枚举一起使用

kudu系列: Java API使用和效率测试

使用Spark Streaming + Kudu + Impala构建一个预测引擎