读写MaxCompute数据
本文介绍如何在云原生数据仓库 AnalyticDB MySQL 版中通过Spark SQL读写MaxCompute数据。
前提条件
AnalyticDB for MySQL集群的产品系列为企业版、基础版或湖仓版。
已创建数据库账号。
如果是通过阿里云账号访问,只需创建高权限账号。具体操作,请参见创建高权限账号。
如果是通过RAM用户访问,需要创建高权限账号和普通账号并且将RAM用户绑定到普通账号上。具体操作,请参见创建数据库账号和绑定或解绑RAM用户与数据库账号。
已在AnalyticDB for MySQL集群中创建Job型资源组。具体操作,请参见新建和管理资源组。
MaxCompute与AnalyticDB for MySQL位于同一地域。具体操作,请参见开通MaxCompute。
已创建MaxCompute项目。具体操作,请参见创建MaxCompute项目。
操作步骤
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在SQLConsole窗口,选择Spark引擎和Job型资源组。
编写Spark SQL作业,单击继续执行。
SET spark.adb.version=3.3; SET spark.adb.connectors=odps; SET spark.sql.catalog.odps=org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog; SET spark.sql.extensions=org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions; SET spark.hadoop.odps.project.name=spark_on_maxcompute; SET spark.hadoop.odps.end.point=https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api; SET spark.hadoop.odps.access.id=LTAI****************; SET spark.hadoop.odps.access.key=yourAccessKeySecret; SET spark.sql.catalog.odps.tableWriteProvider=tunnel; SET spark.sql.catalog.odps.tableReadProvider=tunnel; CREATE TABLE odps.spark_on_maxcompute.spark_test(k1 int, k2 string) partitioned BY (part int); INSERT INTO odps.spark_on_maxcompute.spark_test PARTITION(part=1) VALUES(1, 'aaa'); SELECT * FROM odps.adbtest2.spark_test2 WHERE part=1;
参数说明:
参数名称
取值说明
spark.adb.version
使用的Spark版本。仅
3.3
和3.5
版本支持访问MaxCompute数据源。您任选一个版本即可。spark.adb.connectors
数据源名称。读写MaxCompute数据时,固定填写为
odps
。spark.sql.catalog.<catalog_name>
Spark SQL支持的配置数据源的方式。参数名称中的
catalog_name
可自定义。读写MaxCompute数据时,该参数取值固定填写为org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog
。例如:
spark.sql.catalog.odps=org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog
。spark.sql.extensions
Spark SQL扩展。读写MaxCompute数据时,固定填写为
org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions
。spark.hadoop.odps.project.name
MaxCompute项目(Project)名称。本文示例为
spark_on_maxcompute
。说明此处为MaxCompute项目名称,非工作空间名称。您可以登录MaxCompute控制台,左上角切换地域后,在左侧导航栏选择工作区>项目管理,查看具体的MaxCompute项目名称。
spark.hadoop.odps.endpoint
MaxCompute所在地域对应VPC网络的Endpoint。
查询各地域VPC网络的Endpoint,请参见各地域Endpoint对照表(阿里云VPC网络连接方式)。
spark.hadoop.odps.access.id
阿里云账号或者具备MaxCompute项目访问权限的RAM用户的AccessKey ID。
如何获取AccessKey ID,请参见获取AccessKey信息。
spark.hadoop.odps.access.key
阿里云账号或者具备MaxCompute项目访问权限的RAM用户的AccessKey Secret。
如何获取AccessKey Secret,请参见获取AccessKey信息。
spark.sql.catalog.odps.tableWriteProvider
写入使用的接口类型。写MaxCompute数据时,固定填写为
tunnel
,表示通过Tunnel方式写MaxCompute数据。说明如果您仅需要读MaxCompute数据,则无需配置该参数。
spark.sql.catalog.odps.tableReadProvider
读取使用的接口类型。读MaxCompute数据时,固定填写为
tunnel
,表示通过Tunnel方式读MaxCompute数据。说明如果您仅需要写MaxCompute数据,则无需配置该参数。
单击执行SQL。
Spark作业执行成功后,您可以在Spark Jar开发页面应用列表页签中的日志查看表数据。详情请参见Spark开发编辑器。