首页 > 其他分享 >dremio SchemaMutability 简单说明

dremio SchemaMutability 简单说明

时间:2024-04-18 11:55:06浏览次数:30  
标签:dremio false boolean SchemaMutability 简单 TABLE true public

dremio SchemaMutability 属于一个枚举,定义了schema 的可变性能力()

参考定义

public enum SchemaMutability {
  @Tag(1)
  ALL(true, true, true, true),
 
  @Tag(2)
  NONE(false, false, false, false),
 
  @Tag(3)
  SYSTEM_TABLE(false, true, false, false),
 
  @Tag(4)
  SYSTEM_TABLE_AND_VIEW(false, true, false, true),
 
  @Tag(5)
  SYSTEM_VIEW(false, false, false, true),
 
  @Tag(6)
  USER_TABLE(true, true, false, false),
 
  @Tag(7)
  USER_VIEW(false, false, true, true),
 
  @Tag(8)
  USER_TABLE_AND_VIEW(true, true, true, true);
 
  final boolean anyoneMutateTable;
  final boolean systemMutateTable;
  final boolean anyoneMutateView;
  final boolean systemMutateView;
 
  private SchemaMutability(
      boolean anyoneMutateTable,
      boolean systemMutateTable,
      boolean anyoneMutateView,
      boolean systemMutateView) {
    this.anyoneMutateTable = anyoneMutateTable;
    this.systemMutateTable = systemMutateTable;
    this.anyoneMutateView = anyoneMutateView;
    this.systemMutateView = systemMutateView;
  }
 
  public boolean hasMutationCapability(MutationType type, boolean isSystemUser) {
    if (isSystemUser) {
      switch (type) {
        case VIEW:
          return systemMutateView;
        case TABLE:
          return systemMutateTable;
        default:
          throw new IllegalStateException();
      }
    }
 
    switch (type) {
      case VIEW:
        return anyoneMutateView;
      case TABLE:
        return anyoneMutateTable;
      default:
        throw new IllegalStateException();
    }
  }
 
  public static enum MutationType {
    VIEW,
    TABLE
  }
}

使用

dremio 在一些系统存储插件中就进行了明确的能力定义

  • 比如home 的
createSafe(
    catalogService,
    ns,
    HomeFileConf.create(
        HomeFileSystemStoragePlugin.HOME_PLUGIN_NAME,
        uploadsPathConfig.getUri(),
        config.getThisNode(),
        SchemaMutability.USER_TABLE,
        CatalogService.NEVER_REFRESH_POLICY,
        enableAsyncForUploads,
        scratchPathConfig.getDataCredentials()),
    deferred);
  • FileSystemConf 抽象接口定义

相关实现上都会包含能力的定义

public abstract class FileSystemConf<C extends FileSystemConf<C, P>, P extends FileSystemPlugin<C>>
    extends ConnectionConf<C, P> implements AsyncStreamConf, MutablePluginConf {
  public abstract Path getPath();
 
  public abstract boolean isImpersonationEnabled();
 
  public abstract List<Property> getProperties();
 
  public abstract String getConnection();
 
  public abstract boolean isPartitionInferenceEnabled();
 
  public abstract SchemaMutability getSchemaMutability();
 

s3 文件系统扩展的处理

@Override
public SchemaMutability getSchemaMutability() {
  return SchemaMutability.USER_TABLE;
}
  • 处理

核心是内部的判定文件系统时候支持特定的操作,比如view,table,比如dropview 的处理

public void dropView(
    NamespaceKey tableSchemaPath, ViewOptions viewOptions, SchemaConfig schemaConfig)
    throws IOException {
  if (!Boolean.getBoolean(DremioConfig.LEGACY_STORE_VIEWS_ENABLED)) {
    throw UserException.parseError()
        .message("Unable to drop view. Filesystem views are not supported.")
        .build(logger);
  } else if (!getMutability()
      .hasMutationCapability(MutationType.VIEW, schemaConfig.isSystemUser())) {
    throw UserException.parseError()
        .message("Unable to drop view. Schema [%s] is immutable for this user.", this.name)
        .build(logger);
  }
 
  createFS(schemaConfig.getUserName())
      .delete(getViewPath(tableSchemaPath.getPathComponents()), false);
}

完整的如下图

说明

目前jdbc类的存储插件(arp)的没有此配置

参考资料

dac/backend/src/main/java/com/dremio/dac/daemon/SystemStoragePluginInitializer.java
common/legacy/src/main/java/com/dremio/exec/store/dfs/SchemaMutability.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/FileSystemConf.java

标签:dremio,false,boolean,SchemaMutability,简单,TABLE,true,public
From: https://www.cnblogs.com/rongfengliang/p/18140566

相关文章

  • nmap的简单使用
    Nmap是一款开源免费的网络发现(NetworkDiscovery)和安全审计(SecurityAuditing)工具。软件名字Nmap是NetworkMapper的简称Nmap下载地址:http://nmap.org/download.html nmap包含四项基本功能:1.主机发现(hostDiscovery)2.端口扫描(PortScanning)3.版本侦测(VersionDetec......
  • dbt flags 变量简单说明
    通过flags可以使用dbtcli的一些参数,比较常用的是对于增量物化处理的场景参考使用{%ifflags.FULL_REFRESH%}droptable...{%else%}--no-op{%endif%}说明支持的参数都在flags中可以看看,一些dbtadapter的实现都会使用到此变量参考......
  • React 简单登录平台Demo(0):环境配置
    目录前言Create-react-app环境配置文件路径添加组件添加tailWindcss文件tailwind.config.js添加compilecss目标常见错误添加路由简单路由添加复杂路由添加LoginPageMainPagerouter.js总结前言这次用React简单写一个登录网页的DemoCreate-react-app环境配置create-react-app......
  • Unity超简单2步制作列表组件方法
    1、创建画布(Canvas),并创建UI→滚动视图(ScrollView);2、展开Viewport,选中Content,添加组件GridLayoutGroup和ContentSizeFitter;单元格大小Y修改每一个列表项的高度,到这里列表组件就制作好了。下面是制作列表项。3、右键Content,创建空物体GameObject,改名为item;4、右键item,U......
  • 图像简单处理
    需求:对上面多张这样的图像,将成员识别出来,读取本周活跃值。生成一张全部由成员组成的大图思路:使用OpenCVSharp进行目标区域边框检测,根据大小过滤目标区域。使用Tesseract对指定位置进行文字识别(貌似识别精度不高,有乱码。)主要代码usingSystem;usingSystem.Collections.Gener......
  • springboot简单正确的使用构造函数注入
    一个一个写构造函数太麻烦了,而且代码会显得非常多,这里我们可以采用lombok快捷注入但是我们并不是所有的成员变量都需要进行注入,所以使用@RequiredArgsConstrucotr需要构造函数的部分添加上final关键字"Alwaysuseconstructorbaseddependencyinjectioninyourbeans.Alwa......
  • 30.swagger springboot中简单整理
    类似postman接口在线测试API接口哈哈我也不太懂接口还没前后端整合过呢也就是注释你的各种接口吧可有可无先说依赖问题这个是swagger2的依赖当然出现问题了已经更新到了swagger3了参考:https://cloud.tencent.com/developer/article/1936862https://mvnrepos......
  • 【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
    问题描述看见一个有趣的页面,可以把输入的文字信息,直接输出SVG图片,还可以实现动图模式。示例URL: https://readme-typing-svg.demolab.com/?font=Fira+Code&pause=1000&color=F7F7F7&background=233911F6&center=true&vCenter=true&random=false&width=435&lines=%E6%8A%8A%E5%......
  • dbt-checkpoint 源码结构简单说明
    前边说过dbt-checkpoint是基于dbt的元数据解析,然后集合规则进行check,属于一个pre-commit插件,以下简单说明下内部实现配置核心是.pre-commit-hooks.yaml文件,一个标准的pre-commit定义内容核心是id,name,entry,language,entry实际上就是一个pythonentry_points的console_......
  • 自定义pre-commit 开发格式简单说明
    内容来自官方文档,主要是简单说明下,方便学习约定git项目需要包含.pre-commit-hooks.yaml文件,里边内容格式如下-id:trailing-whitespacename:TrimTrailingWhitespacedescription:Thishooktrimstrailingwhitespace.entry:trailing-w......