VantageからのオブジェクトストアへのParquetファイルの作成
概要
Native Object Storage (NOS) はCSV、JSON、Parquet形式のデータセットなどのファイルに保存されているデータを照会するためのVantage 機能です。 これらはAWS S3、Google GCS、Azure BlobやオンプレミスのS3互換のオブジェクト ストレージをサポートしています。 この機能はVantageにデータを取り込むためのデータパイプラインを構築せずにデータを探索したい場合に役立ちます。このチュートリアルでは逆にVantageからオブジェクト ストレージにParquetファイル形式でデータをエクスポートする方法について説明します。
前提条件
Teradata Vantageインスタンスへのアクセス。NOSはVantage ExpressやDeveloperといった無償の製品でも、またDIYでもVantage as a ServiceでもすべてのVantageエディションでバージョン17.10以降で有効になっています。
このチュートリアルは、s3 awsオブジェクト ストレージをベースにしています。チュートリアルを完了するには、書き込み権限を持つあなた自身のs3バケットが必要です。 |
Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。 |
WRITE_NOS関数でParquetファイルを作成する
WRITE_NOS
を使用するとデータベーステーブルまたはクエリーの結果を選択したまたはすべてのカラムを使用してAmazon S3, Azure Blob storage, Azure Data Lake Storage Gen2, Google Cloud Storageなどの外部オブジェクト ストレージに書き込むことができます。この機能ではデータをParquet形式で保存します。
WRITE_NOS
機能については、 NOS ドキュメント に詳細なドキュメントが掲載されていますので参考にしてください。
WRITE_NOS
関数を実行できるデータベースへのアクセス権が必要です。そのようなデータベースがない場合は、以下のSQLでVantageユーザーを作成します。
CREATE USER db AS PERM=10e7, PASSWORD=db;
-- Don't forget to give the proper access rights
GRANT EXECUTE FUNCTION on TD_SYSFNLIB.READ_NOS to db;
GRANT EXECUTE FUNCTION on TD_SYSFNLIB.WRITE_NOS to db;
ユーザーとその権限の設定についてもっと詳しく知りたい場合は、 NOS ドキュメント を参照してください。 |
-
まず、Teradata Vantageインスタンスにテーブルを作成します。
CREATE SET TABLE db.parquet_table ,FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO, MAP = TD_MAP1 ( column1 SMALLINT NOT NULL, column2 DATE FORMAT 'YY/MM/DD' NOT NULL, column3 DECIMAL(10,2)) PRIMARY INDEX ( column1 );
-
テーブルにサンプルデータを入力します。
INSERT INTO db.parquet_table (1,'2022/01/01',1.1); INSERT INTO db.parquet_table (2,'2022/01/02',2.2); INSERT INTO db.parquet_table (3,'2022/01/03',3.3);
テーブルは以下のようになります。
column1 column2 column3 ------- -------- ------------ 1 22/01/01 1.10 2 22/01/02 2.20 3 22/01/03 3.30
-
WRITE_NOS
を使用してParquetファイルを作成します。<BUCKET_NAME>
をs3バケットの名前に置き換えることを忘れないでください。また、<YOUR-ACCESS-KEY-ID>
と<YOUR-SECRET-ACCESS-KEY>
をアクセス キーとシークレットに置き換えます。オブジェクト ストレージにアクセスするための信頼証明を作成する方法については、クラウド プロバイダのドキュメントを確認してください。例えば、AWS の場合は 、 How do I create an AWS access key? (AWS アクセス キーを作成するにはどうすればよいですか?)」 を確認してください。 SELECT * FROM WRITE_NOS ( ON ( SELECT * FROM db.parquet_table) USING LOCATION('/s3/<BUCKET_NAME>.s3.amazonaws.com/parquet_file_on_NOS.parquet') AUTHORIZATION('{"ACCESS_ID":"<YOUR-ACCESS-KEY-ID>", "ACCESS_KEY":"<YOUR-SECRET-ACCESS-KEY>"}') STOREDAS('PARQUET') MAXOBJECTSIZE('16MB') COMPRESSION('SNAPPY') INCLUDE_ORDERING('TRUE') INCLUDE_HASHBY('TRUE') ) as d;
これで、オブジェクト ストレージ バケットにparquetファイルが作成されました。ファイルを簡単にクエリーするには、ステップ 4 に従う必要があります。
-
NOSでサポートされる外部テーブルを作成します。
<BUCKET_NAME>
をs3バケットの名前に置き換えることを忘れないでください。また、<YOUR-ACCESS-KEY-ID>
と<YOUR-SECRET-ACCESS-KEY>
をアクセス キーとシークレットに置き換えます。CREATE MULTISET FOREIGN TABLE db.parquet_table_to_read_file_on_NOS , EXTERNAL SECURITY DEFINER TRUSTED CEPH_AUTH, MAP = TD_MAP1 ( Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC , col1 SMALLINT , col2 DATE , col3 DECIMAL(10,2) ) USING ( LOCATION ('/s3/<BUCKET_NAME>.s3.amazonaws.com/parquet_file_on_NOS.parquet') AUTHORIZATION('{"ACCESS_ID":"<YOUR-ACCESS-KEY-ID>", "ACCESS_KEY":"<YOUR-SECRET-ACCESS-KEY>"}') STOREDAS ('PARQUET') )NO PRIMARY INDEX;
-
これで、NOS 上のparquetファイルをクエリーする準備ができました。以下のクエリーを試してみましょう。
SELECT col1, col2, col3 FROM db.parquet_table_to_read_file_on_NOS;
クエリーから返されるデータは以下のようになります。
col1 col2 col3 ------ -------- ------------ 1 22/01/01 1.10 2 22/01/02 2.20 3 22/01/03 3.30
まとめ
このチュートリアルでは、Native Object Storage (NOS) を使用して、Vantage からオブジェクト ストレージ上の parquet ファイルにデータをエクスポートする方法を学習しました。NOS は、CSV、JSON、および Parquet 形式で保存されたデータの読み取りとインポートをサポートしています。NOS は、Vantage からオブジェクト ストレージにデータをエクスポートすることもできます。
さらに詳しく
ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。 |