日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過Spark SQL讀寫OSS外表

本文以OSS Parquet格式為例介紹如何通過Spark SQL讀寫OSS外表。

前提條件

  • 集群的產品系列為企業版、基礎版或湖倉版

  • 已創建Job型資源組。具體操作,請參見新建資源組

  • 已創建AnalyticDB for MySQL集群的數據庫賬號。

步驟一:進入數據開發

  1. 登錄云原生數據倉庫AnalyticDB MySQL控制臺,在左上角選擇集群所在地域。在左側導航欄,單擊集群列表,在企業版、基礎版或湖倉版頁簽下,單擊目標集群ID。

  2. 在左側導航欄,單擊作業開發 > SQL開發

  3. SQLConsole窗口,選擇Spark引擎和Job型資源組。

步驟二:創建外庫與OSS外表

說明

您可以選擇批處理或交互式執行任意一種方式執行以下SQL語句。詳情請參見Spark SQL執行方式

  1. 執行以下語句,創建外庫。

    CREATE DATABASE IF NOT exists test_db comment 'demo db' 
    location 'oss://<bucket_name>/test'   /*用于在該路徑中創建表,請替換為自己的OSS路徑。*/
    WITH dbproperties(k1='v1', k2='v2');
    說明

    您也可以在dbproperties中配置'auto.create.location'='true'自動創建OSS路徑。如果未指定該參數并且OSS中不存在該路徑,請先創建對應的OSS路徑。

  2. 執行以下語句,創建OSS外表。

    -- 創建非分區表。
    CREATE TABLE IF NOT exists test_db.test_tbl(id int, name string, age int) 
    using parquet 
    location 'oss://<bucket_name>/test/test_tbl/' 
    tblproperties ('parquet.compress'='SNAPPY');
    
    -- 創建分區表。
    CREATE TABLE IF NOT exists test_db.test_tbl_partitioned(id int, name string, age int) 
    using parquet partitioned by (location string) 
    location 'oss://<bucket_name>/test/test_tbl_partitioned/' 
    tblproperties ('parquet.compress'='SNAPPY');
    重要
    • OSS路徑中的Bucket需與創建數據庫所選的Bucket相同。

    • 創建外表時選擇的OSS路徑需比創建數據庫時選擇的OSS路徑至少多一層目錄,且外表的路徑需在數據庫路徑下。

    • 可以在tblproperties中配置'auto.create.location'='true'自動創建OSS路徑。如果未指定該參數并且OSS中不存在該路徑,請先創建對應的OSS路徑。

步驟三:寫入OSS外表數據

重要

AnalyticDB for MySQL默認不支持多個Spark作業同時寫一張OSS外表的不同分區。如果需要多個Spark作業同時寫一張OSS外表的不同分區,請添加spark.hadoop.fs.aliyun.oss.upload.basedir=oss://<bucket_name>/test/upload;配置,且該配置中的OSS的Bucket需要與OSS外表所在的Bucket相同。多個Spark作業可以配置使用同一個OSS路徑。

您可以選擇批處理或交互式執行任意一種方式執行以下SQL語句。詳情請參見Spark SQL執行方式

執行以下語句,寫入數據。您可以選擇以下任意一種方式向OSS外表中寫入數據。

  • 方式一:INSERT INTO寫入

    INSERT INTO test_db.test_tbl VALUES(1, 'adb', 10);
  • 方式二:INSERT OVERWRITE全表寫入

    INSERT OVERWRITE test_db.test_tbl VALUES(2, 'spark', 10);
  • 方式三:INSERT INTO靜態分區寫入

    INSERT INTO TABLE test_db.test_tbl_partitioned PARTITION(location='hangzhou') VALUES(1, 'adb', 10);
  • 方式四:INSERT OVERWRITE靜態分區寫入

    INSERT OVERWRITE TABLE test_db.test_tbl_partitioned PARTITION(location='hangzhou') VALUES(1, 'adb', 10);
  • 方式五:INSERT OVERWRITE動態分區覆蓋寫

    INSERT OVERWRITE TABLE test_db.test_tbl_partitioned PARTITION(location) VALUES(1, 'adb', 10, 'beijing');

步驟四:查詢數據

說明
  • 您可以選擇批處理或交互式執行任意一種方式執行以下SQL語句。詳情請參見Spark SQL執行方式

  • 執行Spark SQL語句,只返回執行成功或者失敗,不返回數據。您可以在Spark Jar開發頁面應用列表頁簽中的日志查看表數據。詳情請參見查看Spark應用信息

執行以下語句,查詢OSS外表數據。

SELECT * FROM test_db.test_tbl;
SELECT * FROM test_db.test_tbl_partitioned;

(可選)步驟五:刪除外表

測試完成后,您可以執行以下語句,刪除表的元數據。

DROP TABLE if exists test_db.test_tbl;
DROP TABLE if exists test_db.test_tbl_partitioned;

只會刪除表的元數據,不會刪除OSS中的數據。