访问JDBC外表

云原生多模数据库Lindorm计算引擎支持访问外部JDBC数据源,您可以通过Spark SQL完成Lindorm与外部数据源之间的数据流转以及联邦计算。

前提条件

  • 已开通Lindorm实例的计算引擎服务,具体操作请参见开通与变配

  • 确保外部数据源已开通访问权限,并且外部数据源与Lindorm实例处于同一个专有网络。

参数配置

外部数据源映射为Lindorm计算引擎中的Catalog(用来标识不同的数据源)。您需要为Catalog自定义一个名称,以hello_jdbc为例,配置Spark SQL作业的参数说明如下:

配置项

说明

示例值

spark.sql.catalog.hello_jdbc

声明一个外部数据源。固定取值为org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog

org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog

spark.sql.catalog.hello_jdbc.url

外部数据源的JDBC地址。目前Lindorm计算引擎支持访问的外部数据源类型为MySQL,计算引擎自带连接器mysql-connector-java-8.0.27.jar。

jdbc:mysql://192.168.11.2:3306

spark.sql.catalog.hello_jdbc.user

访问外部数据源的用户名。

testUser

spark.sql.catalog.hello_jdbc.password

访问外部数据源的密码。

testPassword****

说明

更多配置项请参见Data Source Option

数据访问

您可以通过以下方法配置并提交外部数据源的Spark作业,然后通过Spark SQL完成外部数据源的访问。

  • JDBC开发实践

  • JAR作业开发实践

  • Python作业开发实践

  • 访问示例一:读取外部JDBC数据表(db0.mysql_tbl0)并关联Hive表(hive_tbl0),将结果写入Hive表(hive_tbl1)。

    INSERT INTO spark_catalog.default.hive_tbl1
    SELECT A.col0, A.col1, A.col2, B.col1
    FROM hello_jdbc.db0.mysql_tbl0 A JOIN spark_catalog.default.hive_tbl0 B
    ON A.col0 = B.col0;
  • 访问示例二:过滤Hive表(hive_tbl1),将结果写入外部JDBC数据表(db0.mysql_tbl1)。

    INSERT INTO hello_jdbc.db0.mysql_tbl1
    SELECT col0, col1, col2
    FROM spark_catalog.default.hive_tbl1
    WHERE col0 > 12345;

更多访问方法请参见JDBC To Other Databases