OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

テーブルデータをORCファイルとして出力する方法

公開日:
更新日:
基本操作
#データ抽出

はじめに

Verticaでは外部テーブルを列指向形式としてデータを保持するParquetやORCファイルを利用することができます。

本記事ではVerticaのテーブルデータをORCファイルで出力する方法をご案内します。
Parquetファイルの出力方法は、以下の記事をご参照ください。
テーブルデータをParquetファイルとして出力する方法

「頻繁にアクセスはされないが、過去データを保存しておく必要がある」という要件に対しORCファイルを外部テーブルとして保持しておくことで、以下のメリットがあります。

1.Verticaへの透過的なアクセスを維持できる
2.ライセンスの節約ができる(※)
3.csvフォーマットの外部テーブルと比較した際に高いパフォーマンスが見込める

※ParquetまたはORCを外部表で参照する場合、通常のライセンスとは異なる安価なライセンスで課金されます。詳細を確認したい方は、本ぺージの一番下にあるお問い合わせ先へご連絡ください。

ORCファイルとして出力する方法

ORCファイルへの出力はEXPORT TO ORC文にて実施します。

構文

EXPORT TO ORC ( directory = 'path' [, param=value [,...] ] )[ OVER (over‑clause ) ] 
		AS SELECT query‑expression;

パラメータ名

内容

directory

ORCファイルの出力先ディレクトリ。
ディレクトリは存在していてはならず、現在のユーザーはそれを書き込む権限を持っている必要があります。出力先は、次のファイルシステムのいずれかになります。
・HDFS File System
・S3 Object Store
・Google Cloud Storage (GCS) Object Store
・Azure Blob Storage Object Store
・Linux file system, either an NFS mount or local storage on each node

compression

ZlibまたはUncompressedのいずれかの列圧縮タイプ。

デフォルト:Zlib

stripeSizeMB

エクスポートされたストライプの非圧縮サイズ(MB(整数))。
最小値は1で、最大値は1024です。

デフォルト:250

rowIndexStride

出力にインデックス統計を作成する頻度。
各ストライプのすべてのrowIndexStride行の後に統計を作成します(または、このしきい値よりも小さいストライプの場合は1回)。
最大値は1,000,000です。値0は、インデックス作成を無効にします。

デフォルト:1000

fileSizeMB

単一の出力ファイルの最大ファイルサイズ。
この値はヒントであり、ハードの制限ではありません。
値0は、制限がないことを意味します。

この値は、合計出力サイズではなく、個々の出力ファイルのサイズに影響します。
値が小さい場合、Verticaは出力をより多くのファイルに分割します。
すべてのデータは引き続きエクスポートされます。

デフォルト:10GB

fileMode

HDFSへの書き込みの場合のみ、エクスポートされたすべてのファイルに適用する権限。
値は、Unixの8進形式(「665」など)または「user-group-other」形式(「rwxr-xr-x」など)で指定できます。 8進形式を使用する場合でも、値は文字列としてフォーマットする必要があります。
有効な8進値の範囲は「0」から「1777」です。
HDFS以外の出力先にファイルを書き込む場合、このパラメーターは効果がありません。

デフォルト:hdfs-site.xmlのfs.permissions.umask-modeの値に関係なく、「660」。

dirMode

HDFSへの書き込みの場合のみ、エクスポートされたすべてのディレクトリに適用する権限。
値は、fileModeの場合と同じルールに従います 。
さらに、Vertica HDFSユーザーに完全なアクセス許可(少なくとも「rwx ------」または「700」)を付与する必要があります。

HDFS以外の出力先にファイルを書き込む場合、このパラメーターは効果がありません。

デフォルト:hdfs-site.xmlのfs.permissions.umask-modeの値に関係なく、「755」。

実行例

#出力先のディレクトリが存在しないことを確認する
[dbadmin@indy01 ~]$ ls -l /home/dbadmin/orc/customer
ls: /home/dbadmin/orc/customer にアクセスできません: そのようなファイルやディレクトリはありません

#customerテーブルのデータをORCファイルとして出力する
dbadmin=> EXPORT TO ORC(directory = '/home/dbadmin/orc/customer')
dbadmin->   AS
dbadmin->   SELECT
dbadmin->    *
dbadmin->   FROM
dbadmin->   customer;
 Rows Exported
---------------
       3750000
(1 row)

#出力されたファイルを確認する
[dbadmin@indy01 ~]$ ls -ltr /home/dbadmin/orc/customer/
合計 111560
-rw------- 1 dbadmin verticadba 7143377 10月 10 22:14 e590ef4a-v_vertica_node0001-140418872633088-0.orc
-rw------- 1 dbadmin verticadba 7139966 10月 10 22:14 4485c643-v_vertica_node0001-140419274782464-0.orc
-rw------- 1 dbadmin verticadba 7142666 10月 10 22:14 61864823-v_vertica_node0001-140415156086528-0.orc
-rw------- 1 dbadmin verticadba 7141264 10月 10 22:14 4c704dd5-v_vertica_node0001-140418083698432-0.orc
-rw------- 1 dbadmin verticadba 7121958 10月 10 22:14 313f2f60-v_vertica_node0001-140417802675968-0.orc
-rw------- 1 dbadmin verticadba 7127769 10月 10 22:14 d00a9eca-v_vertica_node0001-140417785890560-0.orc
-rw------- 1 dbadmin verticadba 7144273 10月 10 22:14 7d7501ab-v_vertica_node0001-140418906203904-0.orc
-rw------- 1 dbadmin verticadba 7128517 10月 10 22:14 13bd4642-v_vertica_node0001-140417794283264-0.orc
-rw------- 1 dbadmin verticadba 7141938 10月 10 22:14 071094b0-v_vertica_node0001-140419329328896-0.orc
-rw------- 1 dbadmin verticadba 7141199 10月 10 22:14 db5124fd-v_vertica_node0001-140417857222400-0.orc
-rw------- 1 dbadmin verticadba 7143089 10月 10 22:14 f7c1dd62-v_vertica_node0001-140418599597824-0.orc
-rw------- 1 dbadmin verticadba 7142834 10月 10 22:14 d71ddaa9-v_vertica_node0001-140420105357056-0.orc
-rw------- 1 dbadmin verticadba 7138588 10月 10 22:14 844118c6-v_vertica_node0001-140419392337664-0.orc
-rw------- 1 dbadmin verticadba 7141492 10月 10 22:14 79048d77-v_vertica_node0001-140418117269248-0.orc
-rw------- 1 dbadmin verticadba 7142466 10月 10 22:14 1b7ce942-v_vertica_node0001-140418897811200-0.orc
-rw------- 1 dbadmin verticadba 7127244 10月 10 22:14 a2f000d6-v_vertica_node0001-140417848829696-0.orc

参考情報

EXPORT TO ORC
https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/SQLReferenceManual/Statements/ExportToORC.htm/

CSVファイルを外部テーブルとして利用する方法
https://www.ashisuto.co.jp/cm/analytics-database/external-table-on-vertica.html

検証バージョンについて

この記事の内容はVertica 11.0で確認しています。

更新履歴

2021/10/12 本記事を公開