SelectDB Enterprise
参考手册
SQL 函数
表值函数
HDFS

HDFS

描述

HDFS 表函数(table-valued-function,tvf),可以让用户像访问关系表格式数据一样,读取并访问 HDFS 上的文件内容。目前支持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>" [, ...] ]
  );

必填参数 (Required Parameters)

参数说明
uri访问 HDFS 的 URI。如果 URI 路径不存在或文件为空,HDFS TVF 将返回空集合。
fs.defaultFSHDFS 的默认文件系统 URI
hadoop.username必填,可以是任意字符串,但不能为空。
format文件格式,必填,目前支持 csv/csv_with_names/csv_with_names_and_types/json/parquet/orc/avro

可选参数 (Optional Parameters)

上述语法中的 optional_property_key 可以按需从以下列表中选取对应的参数,optional_property_value 则为该参数的值

参数说明备注
hadoop.security.authenticationHDFS 安全认证类型
hadoop.username备用 HDFS 用户名
hadoop.kerberos.principalKerberos 主体
hadoop.kerberos.keytabKerberos 密钥表
dfs.client.read.shortcircuit启用短路读取
dfs.domain.socket.path域套接字路径
dfs.nameservicesHA 模式下的命名服务
dfs.ha.namenodes.your-nameservicesHA 模式下的 namenode 节点配置
dfs.namenode.rpc-address.your-nameservices.your-namenode指定 namenode 的 RPC 地址
dfs.client.failover.proxy.provider.your-nameservices指定 failover 的代理提供程序
column_separator列分割符,默认为 \t
line_delimiter行分割符,默认为 \n
compress_type目前支持 UNKNOWN/PLAIN/GZ/LZO/BZ2/LZ4FRAME/DEFLATE/SNAPPYBLOCK。默认值为 UNKNOWN, 将会根据 uri 的后缀自动推断类型
read_json_by_line对 JSON 格式导入,默认为 true参考:JSON Load
strip_outer_array对 JSON 格式导入,默认为 false参考:JSON Load
json_root对 JSON 格式导入,默认为空参考:JSON Load
json_paths对 JSON 格式导入,默认为空参考:JSON Load
num_as_string对 JSON 格式导入,默认为 false参考:JSON Load
fuzzy_parse对 JSON 格式导入,默认为 false参考:JSON Load
trim_double_quotes对 CSV 格式导入,布尔类型,默认为 false,为 true 时裁剪每个字段的外层双引号
skip_lines对 CSV 格式导入,整数类型,默认为 0,跳过 CSV 文件前几行,csv_with_namescsv_with_names_and_types 时失效
path_partition_keys指定文件路径中携带的分区列名,例如/path/to/city=beijing/date="2023-07-09", 则填写 path_partition_keys="city,date",将会自动从路径中读取相应列名和列值进行导入
resource指定 Resource 名,HDFS TVF 可以利用已有的 HFDS Resource 来直接访问 HDFS。创建 HDFS Resource 的方法可以参照 CREATE-RESOURCE仅支持 2.1.4 及以上版本

权限控制

权限(Privilege)对象(Object)说明(Notes)
USAGE_PRIV
SELECT_PRIV

示例

  • 读取并访问 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 存储上的 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");
© 2025 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标