OSS支援使用者在OSS目錄下上傳不同表結構的資料,MaxCompute建立的OSS外部表格可以根據欄位名稱對資料進行讀寫。本文為您介紹在MaxCompute中使用OSS外部表格根據欄位名稱對資料進行讀寫。
前提條件
已開通MaxCompute並建立專案,詳情請參見建立MaxCompute專案。
已開通OSS並建立儲存空間,詳情請參見控制台建立儲存空間。
根據欄位名稱對資料進行讀寫
上傳ORC資料至OSS指定目錄。
本樣本在OSS上建立目錄
demo7並上傳兩個資料檔案。說明實際使用過程中,請以您OSS和檔案的實際情況為準。
orc_file_with_schema0:-- 欄位資訊 `#id` bigint,`#name` stirng -- 對應資料如下: {`#id`:1,`#name`:"a"} {`#id`:2,`#name`:null}orc_file_with_schema1:-- 欄位資訊 age bigint,`#name` string,`#id` string -- 對應資料如下 {age:10,`#name`:"c",`#id`:"3"} {age:20,`#name`:"d",`#id`:"4"}
登入MaxCompute串連開發工具。
MaxCompute支援您從如下平台建立OSS外部表格,選擇一個開發工具使用。
建立方式
平台
基於MaxCompute SQL建立OSS外部表格
以可視化方式建立OSS外部表格
在MaxCompute中建立OSS外部表格。
通過執行如下樣本命令建立OSS外部表格,建立外部表格文法詳情請參見建立OSS外部表格。
CREATE EXTERNAL TABLE mf_oss_diff_schm ( `#name` string, `#id` string, age bigint ) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' WITH SERDEPROPERTIES ( 'mcfed.orc.schema.resolution'='name' ) STORED AS ORC LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*******/demo7/';查詢資料。
SET odps.ext.oss.orc.native=true; -- 查詢資料。 SELECT * FROM mf_oss_diff_schm; -- 返回結果。 +------------+------------+------------+ | #name | #id | age | +------------+------------+------------+ | a | 1 | NULL | | NULL | 2 | NULL | | c | 3 | 10 | | d | 4 | 20 | +------------+------------+------------+向OSS外部表格寫入資料並查詢。
INSERT into TABLE mf_oss_diff_schm values("e","5",30); -- 查詢資料。 SELECT * FROM mf_oss_diff_schm; -- 返回結果。 +------------+------------+------------+ | #name | #id | age | +------------+------------+------------+ | a | 1 | NULL | | NULL | 2 | NULL | | e | 5 | 30 | | c | 3 | 10 | | d | 4 | 20 | +------------+------------+------------+