MaxCompute Tunnel SDK の BufferedWriter インターフェイスを使用して、Java アプリケーションから MaxCompute テーブルに直接レコードを書き込みます。この方法では、レコードをメモリ内にバッファーし、ライターを閉じる際にフラッシュすることで、1 レコードずつ書き込む場合と比べてネットワークの往復回数を削減できます。
前提条件
作業を開始する前に、以下の項目が完了していることを確認してください。
ご利用の Java プロジェクトで MaxCompute および MaxCompute Tunnel が初期化されていること
対象テーブルに対してアップロードセッションが作成されていること
対象テーブルのスキーマ(列名およびデータの型)が把握されていること
仕組み
アップロードフローは、以下のステップで実行されます。
tunnel.createUploadSession(projectName, tableName)を使用してアップロードセッションを作成します。uploadSession.openBufferedWriter()を使用してBufferedWriterを開きます。uploadSession.newRecord()を使用してRecordオブジェクトを作成します。レコードのフィールド値を設定し、各行に対して
writer.write(record)を呼び出します。finallyブロック内でライターを閉じて、バッファーされたデータを MaxCompute にフラッシュします。uploadSession.commit()を使用してセッションをコミットし、アップロードを確定します。
データのアップロード
以下の例では、MaxCompute および MaxCompute Tunnel がすでに初期化済みであることを前提としています。items、name、および id は、実際のデータおよび列定義に置き換えてください。
// この例を実行する前に、MaxCompute および MaxCompute Tunnel を初期化してください。
RecordWriter writer = null;
TableTunnel.UploadSession uploadSession = tunnel.createUploadSession(projectName, tableName);
try {
int i = 0;
// アップロードセッション用の BufferedWriter を開きます。
writer = uploadSession.openBufferedWriter();
Record product = uploadSession.newRecord();
for (String item : items) {
product.setString("name", item);
product.setBigint("id", i);
// 各レコードをバッファーに書き込みます。
writer.write(product);
i += 1;
}
} finally {
if (writer != null) {
// ライターを閉じて、バッファーされたデータをフラッシュします。
writer.close();
}
}
// セッションをコミットして、アップロードを完了します。
uploadSession.commit();パラメーター
| 変数 | 型 | 説明 |
|---|---|---|
items | String 配列 | アップロードするデータです。STRING 配列として定義します。例:String[] arr = {"s1", "s2"} |
name | STRING 列 | STRING データを書き込む列です。ビジネス要件に基づいて列名およびデータの型を指定してください。 |
id | BIGINT 列 | BIGINT データを書き込む列です。ビジネス要件に基づいて列名およびデータの型を指定してください。 |
セッターメソッドと列の型
各 MaxCompute 列の型には、Record オブジェクトに対応するセッターメソッドがあります。以下の表は、この例で使用されるメソッドを示しています。
| セッターメソッド | 列の型 | 例となる値 |
|---|---|---|
setString(columnName, value) | STRING | "example" |
setBigint(columnName, value) | BIGINT | 42L |
セッターメソッドおよびサポートされる列の型の完全な一覧については、MaxCompute Tunnel SDK リファレンスをご参照ください。
次のステップ
完全な初期化コードおよび実行可能なサンプル全体については、Tunnel SDK ドキュメントをご参照ください。
他の方法でデータをアップロードする場合は、データのアップロードおよびダウンロードに関するドキュメントをご参照ください。