通过Spark SQL读写Azure Blob Storage外表

本文主要介绍如何在云原生数据仓库 AnalyticDB MySQL 版中使用Spark SQL读写Azure Blob Storage中的数据。

前提条件

  • AnalyticDB for MySQL集群的产品系列为企业版、基础版或湖仓版

  • 已在AnalyticDB for MySQL集群中创建Job型资源组。具体操作,请参见新建资源组

  • 已创建AnalyticDB for MySQL集群的数据库账号。

  • AnalyticDB for MySQL集群与OSS存储空间位于相同地域。

  • 已授权AnalyticDB for MySQL扮演AliyunADBSparkProcessingDataRole角色来访问其他云资源。具体操作,请参见账号授权

  • 已配置Spark公网环境。具体操作,请参见Spark应用访问公网配置说明

操作步骤

  1. 下载AnalyticDB for MySQLSpark访问Azure Blob Storage所依赖的JAR包。下载链接,请参见hadoop-azure-datalake-3.3.0.jarhadoop-azure-3.3.0.jar

  2. 将两个JAR包上传至OSS。本文上传路径以oss://testBucketName/path/to为例。具体操作,请参见简单上传

  3. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。

  4. 在左侧导航栏,单击作业开发 > SQL开发

  5. 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应用配置参数说明

  6. 单击立即执行,执行完成后,您可以在Spark Jar开发页面应用列表页签中的日志查看数据。详情请参见Spark开发编辑器