Object Storage Service (OSS) を使用すると、異なるスキーマを持つデータファイルを OSS ディレクトリにアップロードできます。本トピックでは、MaxCompute で OSS 外部テーブルを作成し、フィールド名をマッピングしてこのデータを読み書きする方法について説明します。
前提条件
MaxCompute を有効化し、プロジェクトを作成済みである必要があります。詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
OSS を有効化し、バケットを作成済みである必要があります。詳細については、「バケットの作成」をご参照ください。
カラム名によるデータの読み書き
Optimized Row Columnar (ORC) データを指定された OSS ディレクトリにアップロードします。
本例では、OSS に
demo7という名前のディレクトリを作成し、2 つのデータファイルをアップロードします。説明具体的な手順は、ご利用の OSS およびファイルの状態によって異なります。
orc_file_with_schema0:-- Field information `#id` bigint,`#name` string -- Data: {`#id`:1,`#name`:"a"} {`#id`:2,`#name`:null}orc_file_with_schema1:-- Field information age bigint,`#name` string,`#id` string -- Data: {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; -- Query the data. SELECT * FROM mf_oss_diff_schm; -- The following result is returned. +------------+------------+------------+ | #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); -- Query the data. SELECT * FROM mf_oss_diff_schm; -- The following result is returned. +------------+------------+------------+ | #name | #id | age | +------------+------------+------------+ | a | 1 | NULL | | NULL | 2 | NULL | | e | 5 | 30 | | c | 3 | 10 | | d | 4 | 20 | +------------+------------+------------+