ngdbc.jar 的会话使用详情或实施详情

Session usage details or implementation details of ngdbc.jar

我正在将数据从 Hana 拉到 Hadoop 上。我正在使用 sqoop 1.4.4-mapr-1408。使用 SAP Hana 提供的 Jar 文件在 Sqoop 中使用 JDBC 连接设置 Hana 连接 - ngdbc.jar.

现在的问题是——

  1. jar 如何与 SAP Hana 交互?
  2. 它是获取内存中的整个 table 还是只获取内存中的特定批大小?
  3. 如何从 HANA 端在我们的系统上测量这些统计数据?
  1. .jar 存档包含本机 JAVA JDBC SAP HANA 有线协议。请参阅此处的文档: http://help.sap.com/hana/SAP_HANA_SQL_Command_Network_Protocol_Reference_en.pdf 它没有太多 "magic" - 但它是一个相当优化的 JDBC 4 实施。

    1. JDBC 驱动程序根本不获取 tables。表永远不会离开数据库。您从驱动程序中获得的是结果集。如果你的查询是愚蠢的——简单地读取整个 table,那么驱动程序将相应地提供结果集。 这当然不会立即发生,因此您不需要"drink water from the hose"。您必须在客户端代码中实现的 open-fetch-next 循环由驱动程序转换为类似的从服务器到客户端的分块传输。这个(块大小)的块大小通常是自动设置的,可以通过 JDBC API 设置。

    2. 您可以在 SAP HANA 服务器上使用 JDBC 性能跟踪和网络统计信息。

考虑到您似乎将数据从 HANA 转储到 HADOOP,那么好消息是批量大小自动设置为给定客户端网络设置的最大值。 数据转储的时间很可能会花在具体化大型结果集上。转储 tables 实际上是 HANA 的反用例,这就是为什么它是您可以做的最慢的事情之一。

我的 2 克拉