メインコンテンツまでスキップ
バージョン: 2.1

HDFS

説明

HDFSのtable-valued-function(tvf)は、ユーザーがS3互換オブジェクトストレージ上のファイル内容をリレーショナルTableにアクセスするのと同様に読み取りおよびアクセスできるようにします。現在、csv/csv_with_names/csv_with_names_and_types/json/parquet/orcファイル形式をサポートしています。

構文

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

必須パラメータ

パラメータ説明
uriHDFSにアクセスするためのURI。URIパスが存在しないかファイルが空の場合、HDFS TVFは空のセットを返します。
fs.defaultFSHDFSのデフォルトファイルシステムURI
hadoop.username必須。任意の文字列を指定できますが、空にすることはできません。
formatファイル形式。必須。現在はcsv/csv_with_names/csv_with_names_and_types/json/parquet/orc/avroをサポートしています。

オプションパラメータ

上記構文のoptional_property_keyでは、必要に応じて以下のリストから対応するパラメータを選択でき、optional_property_valueはそのパラメータの値です。

パラメータ説明備考
hadoop.security.authenticationHDFSセキュリティ認証タイプ
hadoop.username代替HDFSユーザー名
hadoop.kerberos.principalKerberosプリンシパル
hadoop.kerberos.keytabKerberos keytab
dfs.client.read.shortcircuitshort-circuit readを有効にする
dfs.domain.socket.pathドメインソケットパス
dfs.nameservicesHAモード用のnameservice
dfs.ha.namenodes.your-nameservicesHAモードでのnamenodeの設定
dfs.namenode.rpc-address.your-nameservices.your-namenodenamenodeのRPCアドレスを指定
dfs.client.failover.proxy.provider.your-nameservicesフェイルオーバー用のプロキシプロバイダーを指定
column_separator列区切り文字。デフォルトは\t
line_delimiter行区切り文字。デフォルトは\n
compress_typeサポートされるタイプ:UNKNOWN/PLAIN/GZ/LZO/BZ2/LZ4FRAME/DEFLATE/SNAPPYBLOCK。デフォルトはUNKNOWNで、URIサフィックスに基づいてタイプが自動的に推測されます。
read_json_by_lineJSON形式のインポート用。デフォルトはtrue参照:JSON Load
strip_outer_arrayJSON形式のインポート用。デフォルトはfalse参照:JSON Load
json_rootJSON形式のインポート用。デフォルトは空参照:JSON Load
json_pathsJSON形式のインポート用。デフォルトは空参照:JSON Load
num_as_stringJSON形式のインポート用。デフォルトはfalse参照:JSON Load
fuzzy_parseJSON形式のインポート用。デフォルトはfalse参照:JSON Load
trim_double_quotesCSV形式のインポート用。boolean型。デフォルトはfalsetrueの場合、各フィールドの最外側の二重引用符を削除します。
skip_linesCSV形式のインポート用。integer型。デフォルトは0。CSVファイルの最初の数行をスキップします。csv_with_namesまたはcsv_with_names_and_typesが設定されている場合、このパラメータは無視されます。
path_partition_keysファイルパスに含まれるパーティション列名を指定します。例:/path/to/city=beijing/date="2023-07-09"の場合、path_partition_keys="city,date"と入力すると、パスから対応する列名と値を自動的に読み取ってインポートします。
resourceリソース名を指定します。HDFS TVFは既存のHDFSリソースを使用して直接HDFSにアクセスできます。HDFSリソースの作成についてはCREATE-RESOURCEを参照してください。バージョン2.1.4以上でサポート。

アクセス制御要件

権限オブジェクト備考
USAGE_PRIVtable
SELECT_PRIVtable

  • hdfsストレージ上のcsv形式ファイルの読み取りとアクセス。

    select * from hdfs(
    "uri" = "hdfs://127.0.0.1:842/user/doris/csv_format_test/student.csv",
    "fs.defaultFS" = "hdfs://127.0.0.1:8424",
    "hadoop.username" = "doris",
    "format" = "csv");
      +------+---------+------+
    | c1 | c2 | c3 |
    +------+---------+------+
    | 1 | alice | 18 |
    | 2 | bob | 20 |
    | 3 | jack | 24 |
    | 4 | jackson | 19 |
    | 5 | liming | 18 |
    +------+---------+------+
  • HA モードでhdfs storage上のcsvフォーマットファイルを読み取りおよびアクセスする。

    select * from hdfs(
    "uri" = "hdfs://127.0.0.1:842/user/doris/csv_format_test/student.csv",
    "fs.defaultFS" = "hdfs://127.0.0.1:8424",
    "hadoop.username" = "doris",
    "format" = "csv",
    "dfs.nameservices" = "my_hdfs",
    "dfs.ha.namenodes.my_hdfs" = "nn1,nn2",
    "dfs.namenode.rpc-address.my_hdfs.nn1" = "nanmenode01:8020",
    "dfs.namenode.rpc-address.my_hdfs.nn2" = "nanmenode02: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 と組み合わせて使用できます:

    desc function hdfs(
    "uri" = "hdfs://127.0.0.1:8424/user/doris/csv_format_test/student_with_names.csv",
    "fs.defaultFS" = "hdfs://127.0.0.1:8424",
    "hadoop.username" = "doris",
    "format" = "csv_with_names");