通过Spark SQL读写Azure Blob Storage外表
本文主要介绍如何在云原生数据仓库 AnalyticDB MySQL 版中使用Spark SQL读写Azure Blob Storage中的数据。
前提条件
AnalyticDB for MySQL集群的产品系列为企业版、基础版或湖仓版。
已在AnalyticDB for MySQL集群中创建Job型资源组。
已创建AnalyticDB for MySQL集群的数据库账号。
如果是通过阿里云账号访问,只需创建高权限账号。
如果是通过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开发编辑器。