メインコンテンツまでスキップ
に最終更新

HDFS

説明​

HDFS テーブル値関数(TVF)は、HDFS 上のファイルをリレーショナルテーブルとして読み取ります。csv、csv_with_names、csv_with_names_and_types、json、parquet、orc、avro 形式をサポートします。

構文​

HDFS(
"uri" = "<uri>",
"fs.defaultFS" = "<fs_defaultFS>",
"hadoop.username" = "<hadoop_username>",
"format" = "<format>"
[, "<optional_property_key>" = "<optional_property_value>" [, ...] ]
)

パラメータ​

必須パラメータ​

パラメータ説明
uri読み取るファイルの HDFS URI。パスが存在しない場合やファイルが空の場合、TVF は空の結果を返します。
fs.defaultFSデフォルトの HDFS ファイルシステム URI。
hadoop.usernameHDFS ユーザー名。空でない文字列を指定します。
formatファイル形式:csv、csv_with_names、csv_with_names_and_types、json、parquet、orc、avro。

オプションパラメータ​

<optional_property_key> には以下のキーを使用し、<optional_property_value> には対応する値を指定します。

パラメータ説明備考
hadoop.security.authenticationHDFS の認証方式。
hadoop.kerberos.principalKerberos プリンシパル。
hadoop.kerberos.keytabKerberos keytab ファイル。
dfs.client.read.shortcircuitHDFS のショートサーキット読み取りを有効にします。
dfs.domain.socket.pathドメインソケットのパス。
dfs.nameservicesHA モードで使用するネームサービス。
dfs.ha.namenodes.<nameservice>HA モードで指定したネームサービスの NameNode ID。
dfs.namenode.rpc-address.<nameservice>.<namenode>指定した NameNode の RPC アドレス。
dfs.client.failover.proxy.provider.<nameservice>ネームサービスのフェイルオーバープロキシプロバイダークラス。
column_separator列の区切り文字。デフォルトは \t。
line_delimiter行の区切り文字。デフォルトは \n。
compress_type圧縮形式:UNKNOWN、PLAIN、GZ、LZO、BZ2、LZ4FRAME、DEFLATE、SNAPPYBLOCK。デフォルトは UNKNOWN で、URI の末尾から圧縮形式を推定します。
read_json_by_lineJSON を行単位で読み取ります。デフォルトは true。JSON データロード
strip_outer_arrayJSON の外側の配列を除去します。デフォルトは false。JSON データロード
json_rootJSON のルートパス。デフォルトは空。JSON データロード
json_pathsJSON フィールドのパス。デフォルトは空。JSON データロード
num_as_stringJSON の数値を文字列として読み取ります。デフォルトは false。JSON データロード
fuzzy_parseJSON の曖昧解析を有効にします。デフォルトは false。JSON データロード
trim_double_quotesCSV 用の真偽値。デフォルトは false。有効にすると、各フィールドの外側の二重引用符を除去します。
skip_linesCSV 用の整数。デフォルトは 0。先頭の行をスキップします。csv_with_names と csv_with_names_and_types では無視されます。
path_partition_keysパスに埋め込まれたパーティション列名をカンマで区切って指定します。/path/to/city=beijing/date=2023-07-09 の場合、city,date を指定すると、それらの値を抽出できます。
resourceHDFS へのアクセスに使用する既存の HDFS Resource。CREATE RESOURCE を参照してください。2.1.4 以降
enable_mapping_varbinaryデフォルトは false。Parquet と ORC のバイナリフィールドは通常 STRING にマッピングされますが、有効にすると VARBINARY にマッピングされます。このオプションは enable_mapping_timestamp_tz から独立しています。4.0.3 以降
enable_mapping_timestamp_tz4.1.5 以降は互換性のためにのみ受け付けられ、値は無視されます。isAdjustedToUTC=true の Parquet Timestamp と ORC の TIMESTAMP_INSTANT は常に TIMESTAMPTZ にマッピングされ、このオプションが false の場合も同じです。4.0.3 以降
hive.parquet.time-zone省略可能な文字列で、デフォルトは空です。Parquet INT96 の書き込み側のタイムゾーンを指定します。IANA タイムゾーン、または -12:00 から +14:00 までの UTC オフセットを使用でき、CST や PRC などの短い別名は使用できません。Parquet を参照してください。4.1.5 以降

アクセス制御の要件​

resource パラメータを使用する場合、クエリを実行するユーザーには、その Resource に対する USAGE 権限が必要です。また、Doris から HDFS へのネットワークアクセスと、対象ファイルにアクセスするための有効な HDFS または Kerberos の認証情報も必要です。

戻り値​

ファイルから列名と型を推定したテーブルを返します。NULL フィールドは SQL NULL として返されます。存在しないパスや空のファイルに対しては、空の結果を返します。パラメータが無効な場合、ストレージにアクセスできない場合、ファイルの形式が不正な場合は、解析または実行が失敗することがあります。

例​

以下の例では、HDFS ファイル student.csv に次の内容が含まれているとします。

1,alice,18
2,bob,20
3,jack,24
4,jackson,19
5,liming,18

CSV ファイルを読み取る​

SELECT * FROM HDFS(
"uri" = "hdfs://127.0.0.1:8424/user/doris/csv_format_test/student.csv",
"fs.defaultFS" = "hdfs://127.0.0.1:8424",
"hadoop.username" = "doris",
"format" = "csv",
"column_separator" = ","
);
+------+---------+------+
| c1 | c2 | c3 |
+------+---------+------+
| 1 | alice | 18 |
| 2 | bob | 20 |
| 3 | jack | 24 |
| 4 | jackson | 19 |
| 5 | liming | 18 |
+------+---------+------+

HA 構成の HDFS から CSV ファイルを読み取る​

HA クラスターのネームサービスと両方の NameNode のアドレスを設定します。URI と fs.defaultFS には論理ネームサービスを使用します。

SELECT * FROM HDFS(
"uri" = "hdfs://my_hdfs/user/doris/csv_format_test/student.csv",
"fs.defaultFS" = "hdfs://my_hdfs",
"hadoop.username" = "doris",
"format" = "csv",
"column_separator" = ",",
"dfs.nameservices" = "my_hdfs",
"dfs.ha.namenodes.my_hdfs" = "nn1,nn2",
"dfs.namenode.rpc-address.my_hdfs.nn1" = "namenode01:8020",
"dfs.namenode.rpc-address.my_hdfs.nn2" = "namenode02:8020",
"dfs.client.failover.proxy.provider.my_hdfs" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
);
+------+---------+------+
| c1 | c2 | c3 |
+------+---------+------+
| 1 | alice | 18 |
| 2 | bob | 20 |
| 3 | jack | 24 |
| 4 | jackson | 19 |
| 5 | liming | 18 |
+------+---------+------+

推定されたスキーマを確認する​

DESC FUNCTION HDFS(
"uri" = "hdfs://127.0.0.1:8424/user/doris/csv_format_test/student.csv",
"fs.defaultFS" = "hdfs://127.0.0.1:8424",
"hadoop.username" = "doris",
"format" = "csv",
"column_separator" = ","
);
+-------+------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-------+---------+-------+
| c1 | TEXT | Yes | false | NULL | NONE |
| c2 | TEXT | Yes | false | NULL | NONE |
| c3 | TEXT | Yes | false | NULL | NONE |
+-------+------+------+-------+---------+-------+

使用上の注意​

その他の一般的なファイルオプションについては、S3 TVF を参照してください。HDFS 固有の認証設定と HA 設定については、HDFS ストレージ を参照してください。