EMR Serverless Spark集成了DuckDB,为您提供轻量级、高效的数据分析能力。通过DuckDB SQL任务,您可以快速进行数据探索、原型开发和临时性数据查询。
前提条件
已创建 Serverless Spark 工作空间。详情请参见创建工作空间。
已创建并启动 DuckDB 会话。详情请参见管理DuckDB会话。
使用限制
仅支持读取OSS文件及DLF Catalog数据。
通过DuckDB读取DLF数据时,存在以下限制:
操作类型:仅支持读取Paimon Append表,暂不支持读取主键表和写入操作。
表格式要求:仅支持
file.format = 'parquet'的Paimon表。Catalog类型要求:不支持访问通过数据共享创建的DLF Catalog。
创建DuckDB SQL任务
进入开发页面。
在左侧导航栏,选择。
在Spark页面,单击目标工作空间名称。
在左侧导航栏,单击数据开发。
新建任务。
在数据开发页面,单击新建任务。
在新建任务对话框中,选择。
输入任务名称,单击确定。
在右上角选择DuckDB会话。
在新建的任务编辑器中输入SQL语句。
读取OSS文件
在进行OSS文件的读写操作之前,请确保已开通OSS服务,并创建相应的存储空间,同时确认Serverless Spark工作空间执行角色具备对该存储空间的访问权限。
查看Parquet、CSV、JSON文件的内容。
-- 查看 Parquet 文件的内容 SELECT * FROM 'oss://bucket/path/to/test.parquet'; -- 查看 CSV 文件的内容 SELECT * FROM 'oss://bucket/path/to/test.csv'; -- 查看 JSON 文件的内容 SELECT * FROM 'oss://bucket/path/to/test.json';查看Parquet文件Schema。
SELECT * FROM parquet_schema('oss://your-bucket/path/to/test.parquet');将查询结果导出为CSV文件。
COPY (SELECT * FROM 'oss://your-bucket/path/to/test.parquet') TO 'oss://your-bucket/path/to/output.csv' (HEADER, DELIMITER ',');
访问DLF Catalog
通过DuckDB读取DLF数据时,存在以下限制:
操作类型:仅支持读取Paimon Append表,暂不支持读取主键表和写入操作。
表格式要求:仅支持
file.format = 'parquet'的Paimon表。Catalog类型要求:不支持访问通过数据共享创建的DLF Catalog。
查看当前工作空间已经绑定的DLF Catalog。有关更多DLF数据目录的内容,请参见管理数据目录。
SHOW DATABASES;查询DLF Catalog中的表数据。
USE <catalogName>.<databaseName>; SELECT * FROM <tableName> LIMIT 10;