ngdbc.jar 的会话使用细节或实现细节
Posted
技术标签:
【中文标题】ngdbc.jar 的会话使用细节或实现细节【英文标题】:Session usage details or implementation details of ngdbc.jar 【发布时间】:2016-02-03 21:32:23 【问题描述】:我正在将数据从 Hana 提取到 Hadoop。我正在使用 sqoop 1.4.4-mapr-1408。 Hana 连接是使用 SAP Hana 提供的 Jar 文件 - ngdbc.jar 在 Sqoop 中使用 JDBC 连接设置的。
现在的问题是——
-
jar 如何与 SAP Hana 交互?
它是在内存中获取整个表还是仅在内存中获取特定的批量大小?
如何从 HANA 端在我们的系统上测量这些统计信息?
【问题讨论】:
【参考方案1】:.jar 存档包含本地 JAVA JDBC 实现 SAP HANA 有线协议。请参阅此处的文档: http://help.sap.com/hana/SAP_HANA_SQL_Command_Network_Protocol_Reference_en.pdf 它没有太多“魔力”——但它是一个相当优化的 JDBC 4 实施。
JDBC 驱动程序根本不获取表。表永远不会离开数据库。您从驱动程序中得到的是结果集。如果您查询愚蠢 - 只是读取整个表,那么驱动程序将相应地提供结果集。 这当然不会立即发生,因此您不需要“从软管中喝水”。您必须在客户端代码中实现的 open-fetch-next 循环由驱动程序转换为从服务器到客户端的类似分块传输。这个块大小(块大小)通常是自动设置的,可以通过 JDBC API 设置。
您可以在 SAP HANA 服务器上使用 JDBC 性能跟踪和网络统计信息。
考虑到您似乎将数据从 HANA 转储到 HADOOP,那么好消息是批处理大小会自动设置为给定客户端网络设置的最大值。 数据转储的时间很可能会花在具体化大型结果集上。转储表实际上是 HANA 的反用例,这就是为什么它是您可以做的最慢的事情之一。
我的 2 克拉。
【讨论】:
谢谢拉尔斯。当您说“实现大型结果集”时,您能否解释更多。在 Views 的情况下会发生什么 - 该过程如何优化? 物化是将内部数据结构(列存储)转换为结果集的过程。由于这整个主题非常复杂,我不能在这里讨论它,您可能想更多地了解 SAP HANA 的内部工作原理,例如,通过 scn.sap.com 或我的书 :-) 哇!这很酷!我有朋友在 HANA 上工作 - 这对他们来说会很有趣。以上是关于ngdbc.jar 的会话使用细节或实现细节的主要内容,如果未能解决你的问题,请参考以下文章