云原生多模数据库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 |
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数据表(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。