SAP HANA 连接 - AWS Glue

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SAP HANA 连接

在 AWS Glue 4.0 及更高版本中,您可以使用 AWS Glue for Spark 来读取和写入 SAP HANA 中的表。您可以使用 SQL 查询来定义要从 SAP HANA 中读取的信息。您可以通过 AWS Glue SAP HANA 连接并使用存储在 AWS Secrets Manager 中的 JDBC 凭证连接到 SAP HANA。

有关 SAP HANA JDBC 的更多信息,请参阅 SAP HANA 文档

配置 SAP HANA 连接

要从 AWS Glue 连接到 SAP HANA,您需要创建 SAP HANA 凭证并将其存储在某个 AWS Secrets Manager 密钥中,然后将该密钥关联到某个 SAP HANA AWS Glue 连接。您需要配置 SAP HANA 服务与 AWS Glue 之间的网络连接。

要连接到 SAP HANA,您可能需要满足一些先决条件:

  • 如果您的 SAP HANA 服务位于某个 Amazon VPC 中,请确保您的 Amazon VPC 配置允许您的 AWS Glue 作业与 SAP HANA 服务进行通信,并且无需通过公共互联网路由流量。

    在 Amazon VPC 中,确定或创建将在执行 AWS Glue 作业时使用的 VPC子网安全组。此外,您的 Amazon VPC 配置需要允许您的 SAP HANA 端点与该位置之间的网络流量。您的作业需要与您的 SAP HANA JDBC 端口建立 TCP 连接。有关 SAP HANA 端口的更多信息,请参阅 SAP HANA 文档。根据您的网络布局,这可能需要更改安全组规则、网络 ACL、NAT 网关和对等连接。

  • 如果您的 SAP HANA 端点可以访问互联网,则无需满足其他先决条件。

配置 SAP HANA 连接:
  1. 在 AWS Secrets Manager 中,使用您的 SAP HANA 凭证创建一个密钥。要在 Secrets Manager 中创建密钥,请按照 AWS Secrets Manager 文档中创建 AWS Secrets Manager 密钥中的教程进行操作。创建密钥后,保留密钥名称 secretName,以供下一步使用。

    • 在选择键/值对时,请使用键 user 和值 saphanaUsername 创建一个键值对。

    • 在选择键/值对时,请使用键 password 和值 saphanaPassword 创建一个键值对。

  2. 在 AWS Glue 控制台中,按照 添加 AWS Glue 连接 中的步骤创建一个连接。创建连接后,保留连接名为 connectionName,以供未来在 AWS Glue 中使用。

    • 选择连接类型时,请选择 SAP HANA。

    • 在提供 SAP HANA URL 时,请提供您的实例的 URL。

      SAP HANA JDBC URL 的格式为 jdbc:sap://saphanaHostname:saphanaPort/?databaseName=saphanaDBname,ParameterName=ParameterValue

      AWS Glue 需要以下 JDBC URL 参数:

      • databaseName – SAP HANA 中要连接的默认数据库。

    • 选择 AWS 密钥时,请提供 secretName

创建 AWS Glue SAP HANA 连接后,您需要完成以下操作,然后才能运行 AWS Glue 作业:

  • 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 secretName 的权限。

  • 在 AWS Glue 作业配置中,提供 connectionName 作为附加网络连接

读取 SAP HANA 表

先决条件:

  • 您要读取的 SAP HANA 表。您将需要该表的标识信息。

    可以使用 SAP HANA 表名和 Schema 名(格式为 schemaName.tableName)来指定表。如果表的 Schema 为默认的“public”,则不需要指定 Schema 名和“.”分隔符。调用此 tableIdentifier 操作。请注意,数据库在 connectionName 中是以 JDBC URL 参数的形式提供的。

  • 为了提供身份验证信息而配置的 AWS Glue SAP HANA 连接。完成上一节“配置 SAP HANA 连接”中的步骤,以配置您的身份验证信息。您需要 AWS Glue 连接的名称 connectionName

例如:

saphana_read_table = glueContext.create_dynamic_frame.from_options( connection_type="saphana", connection_options={ "connectionName": "connectionName", "dbtable": "tableIdentifier", } )

您还可以提供 SELECT SQL 查询来筛选返回到 DynamicFrame 的结果。您将需要配置 query

例如:

saphana_read_query = glueContext.create_dynamic_frame.from_options( connection_type="saphana", connection_options={ "connectionName": "connectionName", "query": "query" } )

写入 SAP HANA 表

此示例会将来自现有 DynamicFrame dynamicFrame 的信息写入 SAP HANA。如果表中已经含有信息,则 AWS Glue 会出现错误。

先决条件:

  • 您要写入的 SAP HANA 表。

    可以使用 SAP HANA 表名和 Schema 名(格式为 schemaName.tableName)来指定表。如果表的 Schema 为默认的“public”,则不需要指定 Schema 名和“.”分隔符。调用此 tableIdentifier 操作。请注意,数据库在 connectionName 中是以 JDBC URL 参数的形式提供的。

  • SAP HANA 身份验证信息。完成上一节“配置 SAP HANA 连接”中的步骤,以配置您的身份验证信息。您需要 AWS Glue 连接的名称 connectionName

例如:

options = { "connectionName": "connectionName", "dbtable": 'tableIdentifier' } saphana_write = glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="saphana", connection_options=options )

SAP HANA 连接选项参考

  • connectionName – 必需。用于读/写。为了向您的连接方法提供身份验证和网络信息而配置的 AWS Glue SAP HANA 连接的名称。

  • databaseName - 用于读/写。有效值:SAP HANA 中数据库的名称。要连接的数据库的名称。

  • dbtable – 对于写入为必填项,对于读取也为必填项,但提供了 query 时除外。用于读/写。有效值:SAP HANA SQL FROM 子句的内容。标识要连接的 SAP HANA 中的表。除表名之外,您还可以提供其他 SQL,例如子查询。有关更多信息,请参阅 SAP HANA 文档中的 From clause

  • query – 用于读取。用来定义从 SAP HANA 读取数据时要检索的内容的 SAP HANA SQL SELECT 查询。