FILES
リモートストレージ内のデータファイルを定義します。以下の用途に使用できます:
現在、FILES() 関数は以下のデータソースとファイル形式をサポートしています:
- データソース:
- HDFS
- AWS S3
- Google Cloud Storage
- その他の S3 互換ストレージシステム
- Microsoft Azure Blob Storage
- NFS(NAS)
- ファイル形式:
- Parquet
- ORC (バージョン 3.3 以降にサポート)
- CSV (バージョン 3.3 以降にサポート)
- Avro (バージョン 3.4.4 以降にサポートされ、ローディングのみ)
バージョン 3.2 以降、FILES() は基本データ型に加えて、ARRAY、JSON、MAP、STRUCT などの複雑なデータ型もサポートしています。
FILES() for loading
バージョン 3.1.0 以降、StarRocks はテーブル関数 FILES() を使用してリモートストレージに読み取り専用ファイルを定義することをサポートしています。ファイルのパス関連プロパティを使用してリモートストレージにアクセスし、ファイル内のデータのテーブルスキーマを推測し、データ行を返します。SELECT を使用してデータ行を直接クエリしたり、INSERT を使用して既存のテーブルにデータ行をロードしたり、CREATE TABLE AS SELECT を使用して新しいテーブルを作成し、データ行をロードすることができます。バージョン 3.3.4 以降、FILES() を使用して DESC を使用してデータファイルのスキーマを表示することもできます。
構文
FILES( data_location , [data_format] [, schema_detect ] [, StorageCredentialParams ] [, columns_from_path ] [, list_files_only ] [, list_recursively])
パラメータ
すべてのパラメータは "key" = "value"
ペアで指定します。
data_location
ファイルにアクセスするための URI です。
パスまたはファイルを指定できます。たとえば、このパラメータを "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/20210411"
と指定して、HDFS サーバー上のパス /user/data/tablename
から 20210411
という名前のデータファイルをロードできます。
また、ワイルドカード ?
, *
, []
, {}
, または ^
を使用して複数のデータファイルの保存パスとしてこのパラメータを指定することもできます。たとえば、このパラメータを "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/*/*"
または "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/dt=202104*/*"
と指定して、HDFS サーバー上のパス /user/data/tablename
のすべてのパーティションまたは 202104
パーティションのみからデータファイルをロードできます。
ワイルドカードは中間パスを指定するためにも使用できます。
-
HDFS にアクセスするには、このパラメータを次のように指定する必要があります:
"path" = "hdfs://<hdfs_host>:<hdfs_port>/<hdfs_path>"
-- 例: "path" = "hdfs://127.0.0.1:9000/path/file.parquet" -
AWS S3 にアクセスするには:
-
S3 プロトコルを使用する場合、このパラメータを次のよう に指定する必要があります:
"path" = "s3://<s3_path>"
-- 例: "path" = "s3://path/file.parquet" -
S3A プロトコルを使用する場合、このパラメータを次のように指定する必要があります:
"path" = "s3a://<s3_path>"
-- 例: "path" = "s3a://path/file.parquet"
-
-
Google Cloud Storage にアクセスするには、このパラメータを次のように指定する必要があります:
"path" = "s3a://<gcs_path>"
-- 例: "path" = "s3a://path/file.parquet" -
Azure Blob Storage にアクセスするには:
-
ストレージアカウントが HTTP 経由でのアクセスを許可している場合、このパラメータを次のように指定する必要があります:
"path" = "wasb://<container>@<storage_account>.blob.core.windows.net/<blob_path>"
-- 例: "path" = "wasb://testcontainer@testaccount.blob.core.windows.net/path/file.parquet" -
ストレージアカウントが HTTPS 経由でのアクセスを許可している場合、このパラメータを次のように指定する必要があります:
"path" = "wasbs://<container>@<storage_account>.blob.core.windows.net/<blob_path>"
-- 例: "path" = "wasbs://testcontainer@testaccount.blob.core.windows.net/path/file.parquet"
-
-
NFS(NAS) にアクセスするには:
"path" = "file:///<absolute_path>"
-- 例: "path" = "file:///home/ubuntu/parquetfile/file.parquet"注記file://
プロトコルを介して NFS 内のファイルにアクセスするには、各 BE または CN ノードの同じディレクトリに NAS デバイスを NFS としてマウントする必要があります。
data_format
データファイルの形式です。有効な値:
parquet
orc
(バージョン 3.3 以降にサポート)csv
(バージョン 3.3 以降にサポート)avro
(バージョン 3.4.4 以降にサポートされ、ローディングのみ)
特定のデータファイル形式に対して詳細なオプションを設定する必要があります。
list_files_only
が true
に設定されている場合、data_format
を指定する必要はありません。
Parquet
Parquet フォーマットの例:
"format"="parquet",
"parquet.use_legacy_encoding" = "true", -- アンロード専用
"parquet.version" = "2.6" -- アンロード専用
parquet.use_legacy_encoding
DATETIME および DECIMAL データ型に使用されるエンコード技術を制御する。有効な値: 有効な値: true
および false
(デフォルト)。このプロパティはデータのアンロードでのみサポートされる。
この項目が true
に設定されている場合:
- DATETIME 型の場合、システムは
INT96
エンコーディングを使用する。 - DECIMAL 型の場合、システムは
fixed_len_byte_array
エンコーディングを使用する。
この項目が false
に設定されている場合:
- DATETIME 型の場合、システムは
INT64
エンコーディングを使用する。 - DECIMAL 型の場合、システムは
INT32
またはINT64
エンコーディングを使用する。
DECIMAL 128 データ型では、fixed_len_byte_array
エンコーディングのみが使用可能です。parquet.use_legacy_encoding
は有効になりません。
parquet.version
システムがデータをアンロードする Parquet のバージョンを制御します。v3.4.6 以降でサポートされています。有効な値:1.0
、2.4
、および2.6
(デフォルト)。このプロパティはデータのアンロードでのみサポートされる。
CSV
CSV 形式の例:
"format"="csv",
"csv.column_separator"="\\t",
"csv.enclose"='"',
"csv.skip_header"="1",
"csv.escape"="\\"