本文主要介绍如何在云原生数据仓库 AnalyticDB MySQL 版中使用Spark SQL读写Azure Blob Storage中的数据。
前提条件
AnalyticDB for MySQL集群的产品系列为企业版、基础版或湖仓版。
已在AnalyticDB for MySQL集群中创建Job型资源组。具体操作,请参见新建资源组。
已创建AnalyticDB for MySQL集群的数据库账号。
如果是通过阿里云账号访问,只需创建高权限账号。具体操作,请参见创建高权限账号。
如果是通过RAM用户访问,需要创建高权限账号和普通账号并且将RAM用户绑定到普通账号上。具体操作,请参见创建数据库账号和绑定或解绑RAM用户与数据库账号。
AnalyticDB for MySQL集群与OSS存储空间位于相同地域。
已授权AnalyticDB for MySQL扮演AliyunADBSparkProcessingDataRole角色来访问其他云资源。具体操作,请参见账号授权。
已配置Spark公网环境。具体操作,请参见Spark应用访问公网配置说明。
操作步骤
下载AnalyticDB for MySQLSpark访问Azure Blob Storage所依赖的JAR包。下载链接,请参见hadoop-azure-datalake-3.3.0.jar和hadoop-azure-3.3.0.jar。
将两个JAR包上传至OSS。本文上传路径以
oss://testBucketName/path/to
为例。具体操作,请参见简单上传。登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在SQLConsole窗口,选择Spark引擎和Job型资源组,输入以下作业内容:
SET spark.adb.eni.enabled=true; SET spark.adb.eni.vswitchId=vsw-bp1spuegbpswyk9****; SET spark.adb.eni.securityGroupId=sg-bp18rb6aucqaab****; SET spark.sql.catalogImplementation = hive; SET spark.hadoop.fs.azure.account.key.<存储账户名>.dfs.core.windows.net=<storage_account_key>; ADD JAR 'oss://testBucketName/path/to/hadoop-azure-datalake-3.3.0.jar'; ADD JAR 'oss://testBucketName/path/to/hadoop-azure-3.3.0.jar'; -- Here are your sql statements CREATE DATABASE IF NOT EXISTS azure_test location 'abfss://<容器名称>@<存储账户名>.dfs.core.windows.net/spark_test/db'; USE azure_test; CREATE TABLE IF NOT EXISTS test_tbl(id INT, name STRING) location 'abfss://<容器名称>@<存储账户名>.dfs.core.windows.net/spark_test/db/tbl'; INSERT INTO test_tbl VALUES (1, 'aaa'); SELECT * FROM test_tbl;
参数说明如下:
参数
说明
spark.adb.eni.enabled
是否开启使用弹性网卡,这里需要配置为
true
。spark.adb.eni.vswitchId
弹性网卡的交换机ID。此处需填写为Spark公网环境中指定的交换机ID。
spark.adb.eni.securityGroupId
弹性网卡的安全组ID,此处需填写为Spark公网环境中指定的安全组ID。
spark.sql.catalogImplementation
Spark使用的Catalog类型,此处需填写为
hive
。spark.hadoop.fs.azure.account.key.<存储账户名>.dfs.core.windows.net
存储账户的访问密钥。获取方法,请参见获取存储账户的连接字符串。
其他参数请参见Spark应用配置参数说明。
单击立即执行,执行完成后,您可以在Spark Jar开发页面应用列表页签中的日志查看数据。详情请参见Spark开发编辑器。