Object Storage Service (OSS) を使用すると、異なるスキーマのデータファイルを OSS ディレクトリにアップロードできます。このトピックでは、MaxCompute で OSS 外部テーブルを作成し、フィールド名をマッピングしてこのデータを読み書きする方法について説明します。
前提条件
MaxCompute を有効化し、プロジェクトを作成済みであること。 詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
OSS を有効化し、バケットを作成済みであること。 詳細については、「バケットの作成」をご参照ください。
フィールド名によるデータの読み書き
指定された OSS ディレクトリに Optimized Row Columnar (ORC) データをアップロードします。
この例では、
demo7という名前のディレクトリが OSS に作成され、2 つのデータファイルがアップロードされます。説明具体的な手順は、お使いの OSS とファイルのステータスによって異なります。
orc_file_with_schema0:-- フィールド情報 `#id` bigint,`#name` string -- データ: {`#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 に接続します。
次の表で説明する開発ツールのいずれかを使用して、OSS 外部テーブルを作成できます。
作成方法
プラットフォーム
MaxCompute SQL を使用して OSS 外部テーブルを作成する
UI を使用して OSS 外部テーブルを作成する
MaxCompute に OSS 外部テーブルを作成します。
次のコマンドを実行して、OSS 外部テーブルを作成します。 CREATE EXTERNAL TABLE 文の構文の詳細については、「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 | +------------+------------+------------+