当前位置: 首页 > news >正文

Presto本地开发,plugin的设置

1. 新的问题

  • 之前搭建Presto的本地开发环境时,一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块,详细可以参考博客《win10基于IDEA,搭建Presto开发环境》
  • presto服务启动时,指定加载哪些组件,有下面两种配置方法:
    • 线上服务部署,一般使用plugin.dir配置项,默认值:安装包下的plugin目录。会加载plugin目录下的所有插件,比较适合线上服务
    • 本地开发,一般使用plugin.bundles配置项,指定需要加载的plugin以实现服务的快速启动
  • 后来更换笔记本电脑,重新搭建本地开发环境时,发现使用plugin.bundles,竟然无法成功加载plugin
  • 具体报错信息如下,不是很完整:
    2022-07-15T22:54:50.333+0800	ERROR	main	com.facebook.presto.server.PrestoServer	Error loading pom: D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xml
    java.lang.RuntimeException: Error loading pom: D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xmlat io.airlift.resolver.ArtifactResolver.resolvePom(ArtifactResolver.java:143)...at com.facebook.presto.server.PrestoServer.main(PrestoServer.java:77)
    Caused by: org.apache.maven.project.ProjectBuildingException: 1 problem was encountered while building the effective model for com.facebook.presto:presto-memory:0.240
    [FATAL] Non-resolvable parent POM for com.facebook.presto:presto-root:0.240: Could not transfer artifact com.facebook.airlift:airbase:pom:99 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer http://repo.maven.apache.org/maven2/com/facebook/airlift/airbase/99/airbase-99.pom. Error code 501, HTTPS Required and 'parent.relativePath' points at wrong local POM @ com.facebook.presto:presto-root:0.240, D:\IdeaProjects\facebook-presto-0.223.1\pom.xml, line 5, column 13for project com.facebook.presto:presto-memory:0.240 at D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xmlat org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:149)at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:102)at io.airlift.resolver.ArtifactResolver.resolvePom(ArtifactResolver.java:136)... 6 more
    Caused by: org.apache.maven.model.building.ModelBuildingException: 1 problem was encountered while building the effective model for com.facebook.presto:presto-memory:0.240
    [FATAL] Non-resolvable parent POM for com.facebook.presto:presto-root:0.240: Could not transfer artifact com.facebook.airlift:airbase:pom:99 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer http://repo.maven.apache.org/maven2/com/facebook/airlift/airbase/99/airbase-99.pom. Error code 501, HTTPS Required and 'parent.relativePath' points at wrong local POM @ com.facebook.presto:presto-root:0.240, D:\IdeaProjects\facebook-presto-0.223.1\pom.xml, line 5, column 13at org.apache.maven.model.building.DefaultModelProblemCollector.newModelBuildingException(DefaultModelProblemCollector.java:195)at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:841)at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:664)at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:310)at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232)at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:142)... 8 more
    

分析错误日志,得到以下信息:

  • 无法正确加载指定plugin的pom.xml文件,Error loading pom ...
  • 无法加载pom文件的原因: 无法从默认的central仓库,加载presto-root的父模块com.facebook.airlift:airbase,也就是无法加载祖父模块
  • 无法访问central仓库的原因:central仓库使用的是其http地址,现在已经要求使用https方式了

2. 正确的解决办法

  • 在config.properties中,使用maven.repo.local指定本地maven仓库,

    maven.repo.local=/Users/xxx/repo
    
  • 本地仓库已经包含事先mvn clean install好的plugin jar,服务启动加载plugin时,便可以直接从本地仓库获取jar

    2023-03-07T17:21:44.074+0800	INFO	main	com.facebook.airlift.bootstrap.LifeCycleManager	Life cycle startup complete. System ready.
    2023-03-07T17:21:44.074+0800	INFO	main	com.facebook.presto.server.PluginManager	-- Loading plugin ../presto-memory/pom.xml --
    2023-03-07T17:21:55.707+0800	DEBUG	main	com.facebook.presto.server.PluginManager	Classpath for ../presto-memory/pom.xml:
    2023-03-07T17:21:55.728+0800	DEBUG	main	com.facebook.presto.server.PluginManager	    /Users/xxx/IdeaProjects/facebook-presto-0.223.1/presto-memory/target/classes
    2023-03-07T17:21:55.730+0800	DEBUG	main	com.facebook.presto.server.PluginManager	    /Users/xxx/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
    ...
    2023-03-07T17:21:55.760+0800	INFO	main	com.facebook.presto.server.PluginManager	Installing com.facebook.presto.plugin.memory.MemoryPlugin
    2023-03-07T17:21:55.771+0800	INFO	main	com.facebook.presto.server.PluginManager	Registering connector memory
    2023-03-07T17:21:55.773+0800	INFO	main	com.facebook.presto.server.PluginManager	-- Finished loading plugin ../presto-memory/pom.xml --
    

3. 不完美的解决办法

  • 为了避免大家走弯路,还是记录一下自己最开始的不完美的解决办法

  • 从网上查阅资料,发现该仓库确实已经从2020开始,改为使用https访问了

  • 全局搜索,只定位到maven-model-builder依赖中使用的pom-4.0.0.xml,配置的maven仓库地址符合要求

    <dependency><groupId>org.apache.maven</groupId><artifactId>maven-model-builder</artifactId><version>3.0.4</version>
    </dependency>
    

    在这里插入图片描述

  • 通过依赖分析,发现maven-model-builderpresto-main模块因为使用io.airlift.resolver:resolver:1.4,传递导入的
    在这里插入图片描述

  • 因此,就认为只要exclued掉presto-main中的maven-model-builder依赖就行

  • 结果仍然不行,最终只能使用plugin.dir配置plugin信息

    plugin.dir=../presto-server/target/presto-server-0.240/presto-server-0.240/plugin
    
  • 使用plugin.dir存在的问题: 开发过程中,模块重新编译后,需要将该模块的jar放到plugin中,否则最新的代码无法生效

4. 后记:关于Presto Plugin

  • Presto使用插件机制,符合SPI规范的Connector、Type、Function、System Access Control等可以加入到Presto中
  • 插件机制,使得组件功能可插拔、可定制化,可以满足用户的不同需求
  • 不同的插件,定义方式有所差别,但下面的一些事情是通用的:
    1. pom.xml中,packaging方式必须为presto-plugin
      <packaging>presto-plugin</packaging>
      
    2. pom.xml中,需要引入presto-spi模块。同时,必须实现SPI中定义的接口,或重写SPI中定义的方法
      <dependency><groupId>com.facebook.presto</groupId><artifactId>presto-spi</artifactId><scope>provided</scope>
      </dependency>
      
    3. 配置presto-root的pom.xml,添加该插件对应的模块
      <module>presto-xxx-module</module>
      
    4. presto-server/src/main/assembly/presto.xml文件中,配置plugin的输出目录
      <fileSet><directory>${project.build.directory}/dependency/presto-xxx-module-${project.version}</directory><outputDirectory>plugin/xxx-module</outputDirectory>
      </fileSet>
      
    5. 配置presto-server的pom.xml文件,增加以下内容,以保证安装包对应的plugin目录有它的jar包
      <dependency><groupId>com.facebook.presto</groupId><artifactId>presto-xxx-module</artifactId><version>${project.version}</version><type>zip</type><scope>provided</scope>
      </dependency>
      

相关文章:

Presto本地开发,plugin的设置

1. 新的问题 之前搭建Presto的本地开发环境时&#xff0c;一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块&#xff0c;详细可以参考博客《win10基于IDEA&#xff0c;搭建Presto开发环境》presto服务启动时&#xff0c;指定加载哪些组件&#xff…...

2023年3月西安/杭州/深圳/东莞NPDP产品经理认证考试报名

产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年…...

Vue3笔记01 创建项目,Composition API,新组件,其他

Vue3 创建Vue3项目 vue-cli //查看vue/cli版本&#xff0c;确保在4.5.0以上 vue --version //安装或升级vue/cli npm install -g vue/cli //创建项目 vue create new_project //启动 cd new_project npm run serve 也可以通过vue ui进入图形化界面进行创建 vite 新一代前端…...

pandas数据分析(二)

文章目录DataFrame数据处理与分析读取Excel文件中的数据筛选符合特定条件的数据查看数据特征和统计信息按不同标准对数据排序使用分组与聚合对员工业绩进行汇总DataFrame数据处理与分析 部分数据如下 这个数据百度可以搜到&#xff0c;就是下面这个 读取Excel文件中的数据 …...

Spring实现[拦截器+统一异常处理+统一数据返回]

Spring拦截器 1.实现一个普通拦截器 关键步骤 实现 HandlerInterceptor 接口重写 preHeadler 方法&#xff0c;在方法中编写自己的业务代码 Component public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean&#xff0c;如果为 true …...

MySQL——插入加锁/唯一索引插入死锁/批量插入效率

本篇主要介绍MySQL跟加锁相关的一些概念、MySQL执行插入Insert时的加锁过程、唯一索引下批量插入可能导致的死锁情况&#xff0c;以及分别从业务角度和MySQL配置角度介绍提升批量插入的效率的方法&#xff1b;MySQL跟加锁相关的一些概念在介绍MySQL执行插入的加锁过程之前&…...

【专项训练】数组、链表

数组array: list = []链表linked list # Definition for singly-linked list. class ListNode:def __init__(self, x):self.val = xself.next =...

基于Jeecgboot前后端分离的ERP系统开发代码生成(六)

商品信息原先生成的不符合要求&#xff0c;重新生成&#xff0c;包括一个附表商品价格信息表 一、采用TAB主题一对多的模式 因为主键&#xff0c;在online表单配置是灰的&#xff0c;所以不能进行外键管理&#xff0c;只能通过下面数据库进行关联录入&#xff0c;否则online界面…...

什么?同步代码块失效了?-- 自定义类加载器引起的问题

一、背景 最近编码过程中遇到了一个非常奇怪的问题&#xff0c;基于单例对象的同步代码块似乎失效了&#xff0c;百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例&#xff0c;在 init 方法中使用同步代码块来保证 data不…...

CHAPTER 4 文件共享 - Samba

文件共享 - Samba1 Samba1.1 Samba的软件架构1.2 搭建Samba服务器1.3 samba用户管理1. 添加用户2. 修改用户密码3. 删除用户和密码4. 查看samba用户列表5. 查看samba服务器状态1.4 samba共享设置&#xff08;配置文件详解&#xff09;1.5 访问共享目录1. windows访问2. linux客…...

深入分析@Configuration源码

文章目录一、源码时序图1. 注册ConfigurationClassPostProcessor流程源码时序图2. 注册ConfigurationAnnotationConfig流程源码时序图3. 实例化流程源码时序图二、源码解析1. 注册ConfigurationClassPostProcessor流程源码解析&#xff08;1&#xff09;运行案例程序启动类Conf…...

Unity 代码优化 内存管理优化

项目遇到了卡顿的情况 仔细检查了代码没检查出有误的地方 仔细的总结了一下可以优化的东西 解决了卡顿 记录一下 1 协程 项目之前写的关于倒计时之类的东西 都是开了个协程 虽然协程是消耗很小的线程 , 可是还是有额外消耗 而且 有很多用携程来检测销毁预制体的操作 也都放到U…...

设计模式~门面(外观)模式(Facade)-08

目录 &#xff08;1&#xff09;优点 &#xff08;2&#xff09;缺点 &#xff08;3&#xff09;使用场景 &#xff08;4&#xff09;注意事项&#xff1a; &#xff08;5&#xff09;应用实例&#xff1a; &#xff08;6&#xff09;源码中的经典应用 代码 外观模式&am…...

C++面向对象编程之一:封装

C面向对象编程三大特性为&#xff1a;封装&#xff0c;继承&#xff0c;多态。C认为万事万物皆为对象&#xff0c;对象有属性和行为。比如&#xff1a;游戏里的地图场景可以看作是长方形对象&#xff0c;属性场景id&#xff0c;有长&#xff0c;有宽&#xff0c;可能有NPC&…...

IDEA插件系列(3):Maven Helper插件

一、引言在写Java代码的时候&#xff0c;我们可能会出现Jar包的冲突的问题&#xff0c;这时候就需要我们去解决依赖冲突了&#xff0c;而解决依赖冲突就需要先找到是那些依赖发生了冲突&#xff0c;当项目比较小的时候&#xff0c;还比较依靠IEDA的【Diagrams】查看依赖关系&am…...

SAP 更改物料基本计量单位

前言部分 在SAP中物料创建后&#xff0c;一旦发生业务&#xff0c;其基本计量单位便很难修改。由于单位无法满足业务要求&#xff0c;往往会要求新建一个物料替代旧物料。这时候除了要将旧物料上所有的未清业务删除外&#xff0c;还需要替换工艺与BOM中的旧物料。特别是当出现旧…...

蓝桥web基础知识学习

HTMLCSS 知识点重要指数HTML 基础标签&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;HTML5 新特性&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;HTML5 本地存储&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;CSS 基础语法…...

Python+ChatGPT制作一个AI实用百宝箱

目录一、注册OpenAI二、搭建网站及其框架三、AI聊天机器人四、AI绘画机器人ChatGPT 最近在互联网掀起了一阵热潮&#xff0c;其高度智能化的功能能够给我们现实生活带来诸多的便利&#xff0c;可以帮助你写文章、写报告、写周报、做表格、做策划甚至还会写代码。只要与文字相关…...

Python中格式化字符串输出的4种方式

Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’ 一、%号占位符 这是一种引入最早的一种&#xff0c;也是比较容易理解的一种方式.使用方式为&#xff1a; 1、格式化字符串中变化的部分使用占位符 2、…...

C#基础教程15 枚举与类

文章目录 C# 枚举(Enum)声明 enum 变量C# 类(Class)类的定义成员函数和封装C# 中的构造函数关键字 staticC# 枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 声明 enum 变…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...