管理DuckDB会话

更新时间:
复制为 MD 格式

您可以使用DuckDB会话来进行DuckDB SQL交互式开发,享受轻量级、高效的数据分析能力。本文为您介绍如何创建DuckDB会话。

背景信息

DuckDB是一款轻量级、高性能的嵌入式分析型数据库引擎,专为OLAP(联机分析处理)场景优化。

  • 功能特性

    • 嵌入式架构:无需独立服务器,以库的形式直接嵌入应用程序(类似SQLite),支持内存/磁盘模式。

    • 列式存储:数据按列存储,优化聚合查询与扫描性能。

    • 向量化执行:利用SIMD指令并行处理数据批次,减少CPU开销。

    • 标准兼容:支持SQL-92、SQL:2011标准,涵盖CTE、窗口函数、JOIN(包括ASOF JOIN)、子查询等。

    • 多格式直读:直接查询CSV、Parquet、JSON文件,无需导入。

    • 零拷贝集成:与Pandas、Arrow等内存数据结构无缝转换,避免数据迁移开销。

    • 联邦查询:通过httpfs扩展访问远程文件(如S3),或连接PostgreSQL等外部数据库联合查询。

  • 适用场景

    • 交互式分析:快速处理GB~TB级数据集,替代Pandas/Excel处理大数据。

    • 边缘计算:嵌入式部署在终端设备,执行本地数据分析。

    • 数据科学:与Python/R生态无缝衔接,作为ML数据预处理引擎。

    • 实时OLAP:支持高频更新与复杂查询并存的分析需求。

使用限制

  • DuckDB会话仅支持使用esr-4.8.0及以上、esr-3.7.0及以上引擎版本。

创建DuckDB会话

  1. 登录E-MapReduce控制台

    1. 在左侧导航栏,选择EMR Serverless > Spark

    2. Spark页面,单击目标工作空间名称。

    3. EMR Serverless Spark页面,单击左侧导航栏中的会话管理

    4. 会话管理页面,单击DuckDB会话页签。

  2. DuckDB会话列表页面,单击创建DuckDB会话

  3. 创建DuckDB会话对话框中,配置以下参数。

    重要

    建议所选部署队列的并发上限至少设置为DuckDB会话所需的资源大小,具体数值以控制台展示为准。

    参数

    说明

    名称

    新建DuckDB会话的名称。支持中文、英文字母、数字、下划线(_)和连字符(-),长度为1~64个字符。同一工作空间内会话名称不可重复。

    部署队列

    选择用于运行DuckDB会话的资源队列。仅支持选择已就绪的队列。如果您尚未创建队列,请先前往资源队列管理页面创建。具体操作,请参见管理资源队列。

    引擎版本

    选择DuckDB会话使用的引擎版本。当前支持的版本请参见版本介绍。

    自动停止

    设置会话在无活动状态下的自动停止时间。开启后,当会话在指定时间内无任何操作时,系统将自动停止会话以节省资源。默认开启,默认时间为45分钟。

    网络连接

    如果您的DuckDB任务需要访问VPC内的数据源或外部服务,需要配置网络连接。在下拉列表中选择已创建的网络连接名称。具体操作,请参见新增网络连接。

    cores

    DuckDBCPU数量。默认值为2 CPU。

    memory

    DuckDB的内存大小。默认值为8 GB。

    memoryOverhead

    DuckDB可用的内存。默认值为max(384MB, 10% × memory)

    Spark配置

    填写Spark配置信息,默认以空格符分隔,例如,spark.sql.catalog.paimon.metastore dlf

  4. 单击创建

创建完成后,您可以在DuckDB会话列表页面查看新创建的会话。会话状态为运行中时,即可用于DuckDB SQL开发

查看运行记录

  1. 在数据开发任务执行完成后,您可以通过会话管理页面查看任务的运行记录。

  2. 在会话列表页面,单击会话名称。

  3. 单击运行记录页签。

    在该页面中,您可以查看任务的详细运行信息,包括运行ID、启动时间、Spark UI等信息。image