首页
/ Apache Doris LOCAL表值函数详解

Apache Doris LOCAL表值函数详解

2025-06-27 02:43:19作者:胡唯隽

概述

Apache Doris的LOCAL表值函数(TVF)是一种强大的功能,它允许用户像访问关系型数据库表一样直接读取和访问BE节点上的本地文件内容。该功能特别适用于需要快速分析本地日志文件、临时数据文件等场景,为数据分析师和开发人员提供了极大的便利。

核心功能特性

LOCAL TVF支持多种常见文件格式,包括:

  • CSV格式(支持带列名和不带列名)
  • JSON格式
  • Parquet格式
  • ORC格式

基本语法结构

LOCAL(
  "file_path" = "<file_path>", 
  "backend_id" = "<backend_id>",
  "format" = "<format>"
  [, "<optional_property_key>" = "<optional_property_value>" [, ...] ]
);

参数详解

必需参数

  1. file_path
    文件路径,相对于user_files_secure_path目录。需要注意:

    • 路径中不能包含..上级目录引用
    • 支持glob语法进行模式匹配,例如logs/*.log可以匹配logs目录下所有.log文件
  2. backend_id
    文件所在的BE节点ID,可通过show backends命令获取。在2.1.1版本之前,Doris仅支持指定单个BE节点读取本地数据文件。

  3. format
    文件格式,支持:csv/csv_with_names/csv_with_names_and_types/json/parquet/orc

可选参数

  1. shared_storage
    默认为false。如果设置为true,表示文件位于共享存储(如NAS)上。从2.1.2版本开始支持。

  2. 文件格式相关参数
    根据不同的文件格式,支持多种参数配置:

    • CSV格式:column_separatorline_delimitertrim_double_quotes
    • JSON格式:read_json_by_linestrip_outer_arrayjson_root
    • 通用参数:compress_type支持多种压缩格式
  3. path_partition_keys
    指定文件路径中携带的分区列名,例如/path/to/city=beijing/date="2023-07-09",可以设置path_partition_keys="city,date"来自动提取分区信息。

安全与权限

使用LOCAL TVF需要具备ADMIN_PRIV全局权限,这是出于数据安全考虑的重要限制。

典型应用场景

1. 日志文件分析

-- 分析指定BE节点上的日志文件
select * from local(
        "file_path" = "log/be.out",
        "backend_id" = "10006",
        "format" = "csv")
       where c1 like "%start_time%" limit 10;

2. 本地CSV文件读取

-- 读取BE节点上的CSV文件
select * from local(
      "file_path" = "student.csv", 
      "backend_id" = "10003", 
      "format" = "csv");

3. 共享存储文件访问

-- 访问NAS共享存储上的文件
select * from local(
        "file_path" = "/mnt/doris/prefix_*.txt",
        "format" = "csv",
        "column_separator" =",",
        "shared_storage" = "true");

4. 查看文件结构

-- 使用desc function查看文件结构
desc function local(
      "file_path" = "student.csv", 
      "backend_id" = "10003", 
      "format" = "csv");

性能优化建议

  1. 共享存储利用
    对于NAS等共享存储,设置shared_storage=true可以让Doris利用多个BE节点并行读取文件,显著提高查询性能。

  2. 文件格式选择

    • 对于结构化数据,Parquet和ORC格式通常比CSV/JSON有更好的性能
    • 对于日志类文本数据,CSV格式更为合适
  3. 压缩使用
    对于大文件,使用适当的压缩格式(如GZIP、LZ4)可以减少I/O开销。

注意事项

  1. 文件路径安全性:确保文件路径在安全目录下,避免路径遍历漏洞
  2. 版本兼容性:不同Doris版本对LOCAL TVF的支持程度可能不同,特别是共享存储功能在2.1.2版本才引入
  3. 资源消耗:大文件处理可能消耗较多内存和CPU资源,建议适当控制查询范围

LOCAL表值函数为Apache Doris用户提供了灵活的文件数据访问能力,是数据分析和ETL处理中的实用工具。通过合理配置参数和优化查询,可以充分发挥其性能优势。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
263
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
869
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
295
331
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
333
1.09 K
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
18
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
kernelkernel
deepin linux kernel
C
22
5
WxJavaWxJava
微信开发 Java SDK,支持微信支付、开放平台、公众号、视频号、企业微信、小程序等的后端开发,记得关注公众号及时接受版本更新信息,以及加入微信群进行深入讨论
Java
829
22
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
601
58