通過Spark SQL讀寫AWS S3外表
本文主要介紹如何在AnalyticDB for MySQL中使用Spark SQL讀寫AWS S3中的資料。
前提條件
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
已建立AnalyticDB for MySQL叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。
已在AnalyticDB for MySQL叢集中建立Job型資源群組。
已授權AnalyticDB for MySQL扮演AliyunADBSparkProcessingDataRole角色來訪問其他雲資源。
-
已配置Spark公網環境。具體操作,請參見Spark應用訪問公網配置說明。
操作步驟
-
下載AnalyticDB for MySQL Spark訪問AWS S3依賴的JAR包:hadoop-aws-3.3.2.jar和aws-java-sdk-bundle-1.12.712.jar。
-
將兩個JAR包上傳至OSS。本文上傳路徑以
oss://testBucketName/path/to為例。具體操作,請參見簡單上傳。 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
-
在左側導覽列,單擊。
-
在SQL Console視窗,選擇Spark引擎和Job型資源群組。
-
在SQLConsole視窗中輸入以下作業內容:
--作業配置 SET spark.adb.eni.vswitchId=vsw-bp1spuegbpswyk9****; SET spark.adb.eni.securityGroupId=sg-bp18rb6aucqaab****; SET spark.hadoop.fs.s3a.endpoint=s3.us-west-2.amazonaws.com; SET spark.hadoop.fs.s3a.access.key=AKAARTMSBOR4KC****; SET spark.hadoop.fs.s3a.secret.key=5aJuf42w6syiVQ5UnZcwLqXiUSP5SxWnBr****; SET spark.sql.catalogImplementation=hive; --載入串連AWS S3需要使用的JAR包 ADD JAR 'oss://testBucketName/path/to/hadoop-aws-3.3.2.jar'; ADD JAR 'oss://testBucketName/path/to/aws-java-sdk-bundle-1.12.712.jar'; --建立AWS S3外庫和外表 CREATE DATABASE IF NOT EXISTS aws_test location 's3a://testBucketNameS3/spark_test/db'; USE aws_test; CREATE TABLE IF NOT EXISTS test_tbl(id INT, name STRING) location 's3a://testBucketNameS3/spark_test/db/tbl'; --向AWS S3外表中寫入資料 INSERT INTO test_tbl VALUES (2, 'aaa'); --讀取AWS S3資料 SELECT * FROM test_tbl;參數說明如下。
參數
說明
spark.adb.eni.vswitchId
彈性網卡的交換器ID。此處需填寫為Spark公網環境中指定的交換器ID。
spark.adb.eni.securityGroupId
彈性網卡的安全性群組ID,此處需填寫為Spark公網環境中指定的安全性群組ID。
spark.hadoop.fs.s3a.endpoint
AWS S3 Bucket所在地區的Endpoint。擷取方法,請參見所在地區的Endpoint。
spark.hadoop.fs.s3a.access.key
訪問AWS S3 Bucket許可權的AccessKey。
spark.hadoop.fs.s3a.secret.key
訪問AWS S3 Bucket許可權的SecretKey。
spark.sql.catalogImplementation
Spark使用的Catalog類型,此處需填寫為
hive。其他參數請參見Spark應用配置參數說明。
-
單擊執行SQL,執行完成後,您可以在Spark Jar 開發頁面應用列表頁簽中的日誌查看資料。詳情請參見Spark開發編輯器。