用户指南# 高级概述 物理层 一维层 二维层 计算层 IO 层 进程间通信 (IPC) 层 文件格式层 设备层 文件系统层 内存管理 缓冲区 访问缓冲区内存 切片 分配缓冲区 构建缓冲区 内存池 默认内存池 覆盖默认内存池 STL 集成 设备 设备无关编程 内存分析 数组 构建数组 可用策略 使用 ArrayBuilder 及其子类 性能 大小限制和建议 分块数组 切片 数据类型 创建数据类型 类型特征 访问者模式 表格数据 字段 模式 表 记录批次 计算函数 通用计算 API 函数和函数注册表 输入形状 调用函数 隐式转换 常用数值类型 可用函数 类型类别 聚合 分组聚合(“group by”) 逐元素(“标量”)函数 算术函数 位运算函数 舍入函数 对数函数 三角函数 比较 逻辑函数 字符串谓词 字符串转换 字符串填充 字符串修剪 字符串分割 字符串组件提取 字符串连接 字符串切片 包含测试 分类 选择/多路复用 结构转换 转换 时间组件提取 时间差 时区处理 随机数生成 数组级(“向量”)函数 累积函数 关联转换 选择 包含测试 排序和分区 结构转换 替换函数 成对函数 Gandiva 表达式编译器 表达式、投影和过滤器 外部函数开发 Gandiva 表达式、投影和过滤器 构建表达式 投影和过滤器 评估投影 评估过滤器 评估投影和过滤器 Gandiva 外部函数开发指南 介绍 Gandiva 中外部函数类型的概述 为您的需求选择合适的外部函数类型 外部函数注册 使用 NativeFunction 类进行元数据注册 外部 C 函数 C 函数签名 签名映射 处理 arrow::StringType (utf8 类型) 和 arrow::BinaryType 外部 C 函数注册 API 外部 IR 函数 IR 函数实现 编译示例和工具 参数和返回类型的一致性 在 Gandiva 中注册外部 IR 函数 结论 Acero:一个 C++ 流式执行引擎 Acero 概述 什么是 Acero? Acero 不是… 数据科学家的库 数据库 优化器 分布式 Acero 与… Arrow 计算 Arrow 数据集 Substrait Datafusion / DuckDb / Velox / 等。 与 Arrow C++ 的关系 核心概念 ExecNode ExecBatch ExecPlan 声明 Acero 用户指南 使用 Acero 创建计划 使用 Substrait 程序化计划创建 执行计划 DeclarationToTable DeclarationToReader DeclarationToStatus 直接运行计划 提供输入 可用 ExecNode 实现 来源 计算节点 排列节点 接收节点 示例 源 table_source 过滤器 项目 聚合 接收器 consuming_sink order_by_sink select_k_sink table_sink 扫描 写入 联合 hash_join 总结 使用 Acero 与 Substrait Substrait 一致性 计划 扩展 关系(一般) 读取关系 过滤器关系 项目关系 连接关系 聚合关系 表达式(一般) 文字 类型 功能 开发者指南 了解 ExecNode ExecNode::StartProducing() 示例 ExecNode::InputReceived() 示例 ExecNode::InputFinished() 示例 ExecNode::PauseProducing() / ExecNode::ResumeProducing() 示例 ExecNode::StopProducing() 示例 初始化/构造/销毁 总结 扩展 Acero 调度和并行性 计划的并行执行 本地分布式计划 流水线并行 异步性 每个流水线的任务(有时超出) 线程池和调度程序 节点内并行 所有工作都在任务中发生 有序执行 分区执行 溢出 分布式执行 分析和跟踪 基准测试 绑定 公共 API R (dplyr) Python Java 设计理念 引擎独立计算 制作任务而不是线程 不要阻塞 CPU 线程 不要重新发明轮子 避免查询优化 性能指南 批次大小 正在进行和已弃用的工作 扫描仪 v2 OrderBySink 和 SelectKSink 上游更改 输入/输出和文件系统 读取二进制数据 写入二进制数据 文件系统 定义新的文件系统 读取和写入 Arrow IPC 格式 读取 IPC 流和文件 同步读取 事件驱动读取 写入 IPC 流和文件 配置 读取和写入 ORC 文件 支持的 ORC 功能 数据类型 压缩 读取 ORC 文件 ORCFileReader 写入 ORC 文件 ORCFileWriter 读取和写入 Parquet 文件 读取 Parquet 文件 FileReader 性能和内存效率 StreamReader 写入 Parquet 文件 WriteTable StreamWriter 写入器属性 支持的 Parquet 功能 页面类型 压缩 编码 类型 物理类型 逻辑类型 转换类型 特殊情况 Arrow 类型和模式的往返 Parquet 字段 ID 序列化细节 限制 加密 其他 读取和写入 CSV 文件 读取 CSV 文件 TableReader StreamingReader 权衡 写入 CSV 文件 列名 列选择 与列名的交互 数据类型 字典推理 时间戳推理/解析 空值 字符编码 写入选项 性能 读取 JSON 文件 TableReader StreamingReader 数据类型 表格数据集 读取数据集 数据集发现 读取不同的文件格式 自定义文件格式 过滤数据 投影列 读取和写入分区数据 不同的分区方案 分区性能注意事项 从其他数据源读取 读取内存中的数据 从云存储读取 关于事务和 ACID 保证的说明 完整示例 Arrow Flight RPC 编写 Flight 服务 使用 Flight 客户端 取消和超时 启用 TLS 启用身份验证 自定义中间件 最佳实践 gRPC 尽可能重用客户端 不要轮询负载均衡 调试连接问题 内存管理 过多的流量 限制 DoPut 批次大小 关闭无响应的连接 替代传输 UCX 传输 使用 Arrow 调试代码 Arrow C++ 的 GDB 扩展 手动加载 自动加载 支持的类 线程管理 线程池 CPU 与 I/O 串行执行 Jemalloc 后台线程 异步实用程序 未来 OpenTelemetry 创建启用 OpenTelemetry 跟踪的构建 导出跟踪信息 使用 Jaeger UI 可视化跟踪 环境变量