EMR Serverless Presto 语法完全兼容开源 Presto 语法,详细语法规则请参考 Presto 语法说明。本文主要对 Presto 的一些基本操作进行介绍和演示。
CREATE SCHEMA IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA;
CREATE SCHEMA IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA WITH ( LOCATION='tos://${your-presto-bucket}/serverless/presto' );
注意
在自定义 Bucket 时,需要确认该 Bucket 已经创建,并且具有该 Bucket 的读写权限。
DROP SCHEMA SERVERLESS_PRESTO_SCHEMA;
CREATE TABLE IF NOT EXISTS SP_TABLE ( ID BIGINT, NAME VARCHAR, AGE INT );
CREATE TABLE IF NOT EXISTS SP_TABLE ( ID BIGINT, NAME VARCHAR, AGE INT ) COMMENT 'EMR SERVERLESS TABLE' WITH ( EXTERNAL_LOCATION='tos://${your-presto-bucket}/serverless/presto/', FORMAT='ORC' );
注意
DESC SP_TABLE;
INSERT INTO SP_TABLE VALUES (1, 'Serverless', 0), (2, 'Presto', 1);
SELECT * FROM SP_TABLE;
DROP TABLE SP_TABLE;
目前EMR Serverless Presto 支持查询 Hudi、Iceberg 和 Delta 三种湖格式数据。可以通过 EMR Serverless Spark 创建湖格式库表,执行写入操作,然后通过 Presto 执行查询。详情请参考 Spark 文档。
EMR Serverless Presto 默认 Catalog 为 Hive,在操作 Hudi 数据之前需要先将 Catalog 更新为 Hudi。
-- 方式一 USE HUDI.YOUR_HUDI_SCHEMA; -- 方式二 SELECT * FROM HUDI.PRESTO_HUDI_DB.HUDI_TBL;
EMR Serverless Presto 默认 Catalog 为 Hive,在操作 Iceberg 数据之前需要先将 Catalog 更新为 Icerberg。
-- 方式一 USE ICEBERG.YOUR_HUDI_SCHEMA; -- 方式二 SELECT * FROM ICEBERG.PRESTO_ICEBERG_DB.ICEBERG_TBL;
EMR Serverless Presto 默认 Catalog 为 Hive,在操作 Delta 数据之前需要先将 Catalog 更新为 Delta。
-- 方式一 USE DELTA.YOUR_HUDI_SCHEMA; -- 方式二 SELECT * FROM DELTA.PRESTO_DELTA_DB.DELTA_TBL;
注意