dremio 的外部反射使用说明

dremio 外部反射的意思是,反射的数据是在外部存储中,而不是由dremio 自己生成的,典型的场景是我们自己已经包含了物化的数据
而且我们想直接使用物化的数据

创建外部反射

  • 创建vds
 
CREATE VDS "myWorkspace"."sales_by_region" AS
SELECT 
    AVG(sales_amount) average_sales,
    SUM(sales_amount) total_sales,
    COUNT(*) sales_count,
    region
FROM mySource.sales
GROUP BY region
  • 创建外部反射
ALTER DATASET "myWorkspace"."sales_by_region" 
CREATE EXTERNAL REFLECTION "external_sales_by_region" 
USING "mySource"."sales_by_region"

参考示例

  • 环境准备
    docker-compose 同时进行一些数据表的创建
 
version: "3"
services: 
    dremio:
        image: dremio/dremio-oss:15.0.0
        ports: 
        - "9047:9047"
        - "31010:31010"
    postgres:
        image: postgres:12.2
        environment: 
        - "POSTGRES_PASSWORD=dalong"
        ports:
        - "5433:5432"
// table sql
CREATE TABLE myapps (
    id SERIAL PRIMARY KEY,
    username text,
    userage integer
);
 
INSERT INTO "public"."myapps"("id","username","userage")
VALUES
(1,E'dalong',22),
(2,E'rong',3333),
(3,E'app',100);
  • 创建vds
CREATE VDS "demoapp"."myages2" AS
SELECT 
    SUM(userage) total_ages,
    COUNT(*) user_count,
    username
FROM pg.myapps
GROUP BY username
  • 创建外部反射
// pg 创建聚合表
create table sourcereflection2 as 
SELECT 
    SUM(userage) total_ages,
    COUNT(*) user_count,
    username
FROM myapps
GROUP BY username;
// 修改数据支持外部反射
 
ALTER DATASET "demoapp"."myages2" 
CREATE EXTERNAL REFLECTION "external_users_by_username" 
USING "pg"."sourcereflection2"
  • 访问效果

 

 

 

 

说明

当前外部反射不能在解决中看到,直接通过操作函数进行查看,同时我们可以通过系统内部的内存表查看状态sys.reflections,同时注意
官方在实现外部反射的时候会进行vds 与外部发射表schema(字段以及类型的判断)目前数据类型的兼容处理上不是很方便,推荐结合
pg arp 扩展中定义的数据类型进行处理,同时结合information schema 进行外部数据反射的创建,不然会很费事的。。。。

参考资料

https://docs.dremio.com/acceleration/creating-reflections/
https://docs.dremio.com/rest-api/reflections/reflection/#refesh-statuses
https://docs.dremio.com/deployment/query-non-iso-8859/

posted on   荣锋亮  阅读(303)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-08-02 revel golang的全栈开发框架
2019-08-02 diffy 方便的bug 以及流量测试系统
2019-08-02 sql server 性能优化的几个专家工具
2019-08-02 prisma2 预览版
2018-08-02 cratedb 集群搭建说明
2018-08-02 cratedb 基本试用
2018-08-02 fusionjs 学习二 核心概念

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示