You need to enable JavaScript to run this app.
导航
Presto 对湖仓表使用说明
最近更新时间:2025.04.17 15:05:31首次发布时间:2025.04.17 15:05:31
我的收藏
有用
有用
无用
无用

EMR Serverless Presto 语法完全兼容开源 Presto 语法,详细语法规则请参考 Presto 语法说明。本文主要对 Presto 的一些基本操作进行介绍和演示。

Presto 访问 Hive

库操作

-- 未指定las catalog, 默认使用hive catalog
CREATE SCHEMA IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA;

-- 指定自定义las catalog
CREATE SCHEMA IF NOT EXISTS las_catalog_test.SERVERLESS_PRESTO_SCHEMA;

-- 指定TOS路径:Bucket已创建&并且具有该 Bucket 的读写权限
CREATE SCHEMA IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA
WITH (
    LOCATION='tos://${your-presto-bucket}/serverless/presto'
    );
    
-- 删除数据库
DROP SCHEMA SERVERLESS_PRESTO_SCHEMA;

表操作

-- 创建表
CREATE TABLE IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA.SP_TABLE (
    ID BIGINT,
    NAME VARCHAR,
    AGE INT
);

-- 创建表并设置存储路径和存储格式
-- FORMAT 默认为 ORC,可以按需设置为 Parquet,TEXTFILE 等文件格式
CREATE TABLE IF NOT EXISTS SERVERLESS_PRESTO_SCHEMA.SP_TABLE (
    ID BIGINT,
    NAME VARCHAR,
    AGE INT
)
COMMENT 'EMR SERVERLESS TABLE'
WITH (
    EXTERNAL_LOCATION='tos://${your-presto-bucket}/serverless/presto/',
    FORMAT='ORC'
);

-- 查看表信息
DESC SERVERLESS_PRESTO_SCHEMA.SP_TABLE;


-- 查询数据
SELECT * FROM SERVERLESS_PRESTO_SCHEMA.SP_TABLE;

-- 删除表
DROP TABLE SERVERLESS_PRESTO_SCHEMA.SP_TABLE;

UDF 操作

-- presto 使用UDF:latalog.db.udfname
select hive.dbname.udfname('aaabbB');

Presto 访问 Icerberg

-- 默认Hive catalog
SELECT
  *
FROM
  test_iceberg_db.test_tb limit 10;

-- 自定义catalog
SELECT
  *
FROM
  test_catalog.test_iceberg_db.test_tb limit 10;

Presto 访问 Paimon

-- 默认Hive catalog
SELECT
  *
FROM
  test_iceberg_db.test_tb limit 10;

-- 自定义catalog
SELECT
  *
FROM
  test_catalog.test_iceberg_db.test_tb limit 10;

Presto 访问 Hudi

-- 默认Hive catalog
SELECT
  *
FROM
  test_iceberg_db.test_tb limit 10;

-- 自定义catalog
SELECT
  *
FROM
  test_catalog.test_iceberg_db.test_tb limit 10;

Presto 访问 Delta

-- 默认Hive catalog
SELECT
  *
FROM
  test_iceberg_db.test_tb limit 10;

-- 自定义catalog
SELECT
  *
FROM
  test_catalog.test_iceberg_db.test_tb limit 10;