はじめに
Verticaでは外部テーブルを列指向形式としてデータを保持するParquetやORCファイルを利用することができます。本記事ではVerticaのテーブルデータをORCファイルで出力する方法をご案内します。
Parquetファイルの出力方法は、以下の記事をご参照ください。
テーブルデータをParquetファイルとして出力する方法
「頻繁にアクセスはされないが、過去データを保存しておく必要がある」という要件に対しORCファイルを外部テーブルとして保持しておくことで、以下のメリットがあります。
1.Verticaへの透過的なアクセスを維持できる
2.ライセンスの節約ができる(※)
3.csvフォーマットの外部テーブルと比較した際に高いパフォーマンスが見込める
2.ライセンスの節約ができる(※)
3.csvフォーマットの外部テーブルと比較した際に高いパフォーマンスが見込める
※ParquetまたはORCを外部表で参照する場合、通常のライセンスとは異なる安価なライセンスで課金されます。詳細を確認したい方は、本ぺージの一番下にあるお問い合わせ先へご連絡ください。
ORCファイルとして出力する方法
ORCファイルへの出力はEXPORT TO ORC文にて実施します。構文
1 2 |
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」。 |
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#出力先のディレクトリが存在しないことを確認する [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 ORChttps://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/SQLReferenceManual/Statements/ExportToORC.htm/
CSVファイルを外部テーブルとして利用する方法
http://vertica-tech.ashisuto.co.jp/external-table-on-vertica/