Glue Connector 和 Connection 的关系与区别

news2025/2/25 9:22:55

AWS Glue作为一种无服务器产品,其运行环境是“不可预知”的,也就是“一个黑盒”,所以如何能连接一些自有数据源是Glue必须考虑并给予满足的,为此,Glue给出的解决方案就是Connector和Connection,一个connector就是一个用于协助访问数据源的程序包(容器镜像或Jar包),如果你要使用一个connector,必须先创建一个针对该connector的connection。一个connection包含了连接一个特定数据源的属性。connector和connections联合起来为目标数据源提供访问通路。本文地址:https://laurence.blog.csdn.net/article/details/129139176,转载请注明出处!

1. 关系与区别

下面是一些明确切且重要的结论:

  • 先创建Connector,再创建Connection,后者依附于前者,Connector与Connection是一对多的映射关系
  • Connector与Connection非常类似于数据库客户端工具(例如DataGrip)中的Driver和DataSource之间的关系,Connector类似Driver,主要包含JAR包和基础属性(如JDBC类型的Connector需要配置Base的JDBC URL),Connection类似于DataSource,主要包含身份认证信息和网络配置
  • 能在Glue控制台上编辑的主要是Custom Connector & Connection,以及Marketplace Connector关联的Connection
  • Marketplace Connector是只读的,不可配置,对应Connection可由用户创建和编辑
  • Marketplace Connector在架构上有更大的“运作空间”,一般以容器形式运行于EKS/ECS上
  • Custom Connector只能是一个Jar包,所以它只有Spark、Athena、JDBC三种类型(对应Glue提供的三种集成API)
  • Custom Connection可以独立于Connector存在,依赖Jar包可通过Job Dependent Jar配置给Job,故不一定非要依赖Connector
  • 再进一步,如果配置了VPC Connection,再通过Job Dependent Jar配置Jar包,则Connection也可以省去(未必所有的Connection都可以,但测试过部分,确实是可行的)
  • 尽管上述两点都已证明可行,还是建议始终使用Custom Connector + Custom Connection的标准方式配置数据源连接。跳过Connector直接创建Custom Connection会丢失一个优势:由于在Glue图形化编辑器上,只有Connector是可以直接拖放的Source/Sink组件,所以如果跳过Custom Connector直接创建Custom Connection,在Glue图形化编辑器上就没有这个数据源对应的连接器可以拖放了。

下图对以上要点进行了总结:

请添加图片描述

来自于marketplace的connector显然拥有“特权”,它们拥有更加复杂的架构,这些connector往往都有自己docker镜像,并使用ECS/EKS部署和运行镜像,独立的镜像给了connector最大化的定制空间。而自定义connector的“运作空间”远远没有marketplace上的connector大,它不能拥有自定义镜像,只能以jar包形式存在,并依附于Glue的运行环境(通过三套API接口集成),所以,自定义的connector只有三种类型,只能以Jar包形式存在:

  • Spark DataSource API -> connectionType=custom.spark
  • Amazon Athena Data Source API -> connectionType=custom.athena
  • Java JDBC API -> connectionType=custom.jdbc

2. Connection的加载时机

此外,我们一直想找出:Glue的Connection与Spark原生数据加载方式(例如:spark.read.format(“jdbc”))之间到底有什么差异,我们以JDBC类型的Connection做了如下一些测试:

测试场景测试结果
Custom JDBC Connection + Glue Context with Connection成功
Custom VPC Connection + Job Dependent Jar + Glue Context with Connection成功
Custom JDBC Connection + Spark原生数据加载方式 ( spark.read.format(“jdbc”) )失败

上述三个测试用例可有力地证明:在Glue中,对于一个数据源的连接配置只能通过Glue专属的GlueContext加载才能生效。关于这一点,我们没有办法从源代码上获得验证,但是一种合理的解释是:我们知道,Glue作为Serverless产品,其工作节点(Worker)的网络环境是不可见的“黑盒”,为了能和目标数据源打通,Glue会根据Connction中的网络配置给它的工作节点创建临时的ENI(虚拟网卡),用于连接到Connection配置的子网中,这些工作节点也因此获得了指定子网内的私有IP地址,从上面的测试结果来看,真正触发Glue去完成这一系列操作的“开关”是在代码中通过GlueContext加载Connection时(根据Spark Lazy Loading的一贯特性,触发的时机可能会更晚,有可能是在初次读取DynamicFrame时),而不是只要在Job属性中关联了一个Connection,在Job启动时就会被自动激活。

3. 重要细节

最后,补充一些测试中的细节:

  • Trino JDBC Driver的URL中user参数不得为空

  • Trino JDBC Driver的URL中user和passoword,只能通过secret manager配置方可生效

  • 通过Glue专属的GlueContext加载Connection指的是类似下面的代码:

    # author: https://laurence.blog.csdn.net/
    Trino_node1676884948138 = glueContext.create_dynamic_frame.from_options(
        connection_type="custom.jdbc",
        connection_options={
            "tableName": "orders",
            "dbTable": "orders",
            "jobBookmarkKeys": ["orderkey"],
            "jobBookmarkKeysSortOrder": "asc",
            "connectionName": "my-trino-connection",
        },
        transformation_ctx="Trino_node1676884948138",
    )
    
  • 通过Spark原生数据加载方式读取数据源指的是类似下面的代码:

    # author: https://laurence.blog.csdn.net/
    spark.read
         .format("jdbc")
         .option("url", "jdbc:trino://localhost:8889/hive/default")
         .option("driver", "io.trino.jdbc.TrinoDriver")
         .option("user", "hadoop")
         .option("dbtable", "orders")
         .load()
         .show()
    
  • Glue的官方文档对于创建ENI有专门的解释:

    AWS Glue sets up elastic network interfaces that enable your jobs to connect securely to other resources within your VPC. Each elastic network interface is assigned a private IP address from the IP address range within the subnet you specified.

4. 相关资源

4.1. 内置Connectors

connectionTypeConnects To
custom.*Spark, Athena, or JDBC data stores (see Custom and AWS Marketplace connectionType values
documentdbAmazon DocumentDB (with MongoDB compatibility) database
dynamodbAmazon DynamoDB database
kafkaKafka or Amazon Managed Streaming for Apache Kafka
kinesisAmazon Kinesis Data Streams
marketplace.*Spark, Athena, or JDBC data stores (see Custom and AWS Marketplace connectionType values)
mongodbMongoDB database
mysqlMySQL database (see JDBC connectionType Values)
oracleOracle database (see JDBC connectionType Values)
orcFiles stored in Amazon Simple Storage Service (Amazon S3) in the Apache Hive Optimized Row Columnar (ORC) file format
parquetFiles stored in Amazon S3 in the Apache Parquet file format
postgresqlPostgreSQL database (see JDBC connectionType Values)
redshiftAmazon Redshift database (see JDBC connectionType Values)
s3Amazon S3
sqlserverMicrosoft SQL Server database (see JDBC connectionType Values)

4.2. Marketplace Connectors

通过下面的链接可以查找到Marketplace上所有的连接器:

https://aws.amazon.com/marketplace/search/results?searchTerms=glue+connector

4.3. Custom Connectors

这里有一篇整体介绍,建议先阅读此文:

Developing, testing, and deploying custom connectors for your data stores with AWS Glue

4.3.1. 基于Spark DataSource API的自定义连接器

文档:

https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/glue-3.0

示例:

MinimalSpark3Connector.scala

4.3.2. 基Java JDBC API的自定义连接器

文档:

https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#code-jdbc-connector

示例:

https://github.com/aws-samples/aws-glue-samples/blob/master/GlueCustomConnectors/development/Spark/SparkConnectorMySQL.scala

4.3.3. 基Java JDBC API的自定义连接器

文档:

https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena

示例:

https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena

本文地址:https://laurence.blog.csdn.net/article/details/129139176,转载请注明出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快鲸scrm发布快递行业私域运营解决方案

现如今,快递行业竞争格局日益激烈,前有“四通一达”等传统快递企业,后有自带互联网基因、绑定电商流量新贵快递企业,如菜鸟、京东等。在这一背景下,很多快递企业开启了增长破局之旅,他们纷纷搭建起私域运营…

高校借力泛微,搭建一体化、流程化的​内控管理平台

财政部《行政事业单位内部控制规范(试行)》中明确规定:行政事业单位内部控制是指通过制定制度、实施措施和执行程序,实现对行政事业单位经济活动风险的防范和管控,包括对其预算管理、收支管理、采购管理、资产管理、建…

【0基础也能看懂】从0到1落地接口自动化测试

昨天花了几个小时看完了字节XX大佬的《接口测试入门课》,有一些新的收获,结合我自己实践自动化测试的一些经验以及个人理解,这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。为什么要做接口测试测试理念的演变早些时候,软…

【Python入门第十四天】Python 集合

集合(Set) 集合是无序和无索引的集合。在 Python 中,集合用花括号编写。 实例 创建集合: thisset {"apple", "banana", "cherry"} print(thisset)运行实例 注释:集合是无序的&#…

Kubeadm介绍与使用Kubeadm搭建kubernetes集群环境

Kubeadm介绍 1.通俗点讲,kubeadm跟minikube一样,都是一个搭建kubernetes环境一个工具; 区别在于:minikube是搭建单机kubernetes环境的一个工具 kubeadm是搭建集群kubernetes环境的一个工具,这个常用; 2.对…

DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读

DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Extraction 论文:NAACL2022.pdf (tongmeihan1995.github.io) 代码:tongmeihan1995/DocEE: DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Ext…

ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUEST

1、逻辑流 在屏幕开发中,存在如下逻辑流: PBO(Process Before Output):屏幕输出之前触发 PAI(Process After Input):用户在屏幕中执行操作触发 POH(Process On Help-…

5.8 BGP属性-AS-PATH

5.4.2配置BGP AS-PATH属性控制选路 1. 实验目的 熟悉BGP AS-PATH属性控制选路的应用场景掌握BGP AS-PATH属性控制选路的配置方法2. 实验拓扑 实验拓扑如图5-8所示: 图5-8:配置BGP AS-PATH属性控制选路 3. 实验步…

DADPS-Biotin-Alykne|2241685-22-1|DADPS生物素炔烃

DADPS(二烷氧基二苯基硅烷)生物素炔烃探针消除了链霉亲和素-生物素亲和纯化的主要限制。该试剂含有生物素部分和叠氮化物反应部分。DADPS 探针可用于生物分子标记和蛋白质组学研究。 DADPS biotin alkyne probe eliminates the main limitation of affin…

【Linux】软件安装(三)

目录 1. 软件安装 1.1 软件安装方式 1.2 安装JDK 1.3 安装Tomcat 1.4 安装MySQL 1.5 安装lrzsz 1. 软件安装 1.1 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装…

基于springboot校园二手市场平台

一、项目简介 本项目是一套基于springboot校园二手市场平台,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保…

YOLOv6-3.0-目标检测论文解读

文章目录摘要算法2.1网络设计2.2Anchor辅助训练2.3自蒸馏实验消融实验结论论文: 《YOLOv6 v3.0: A Full-Scale Reloading 》github: https://github.com/meituan/YOLOv6上版本参考 YOLOv6摘要 YOLOv6 v3.0中YOLOv6-N达到37.5AP,1187FPS&…

安装配置RabbitMQ(Win11)

一、安装依赖Erlang打开RabbitMQ官网:https://www.rabbitmq.com/点击Get Started点击Download Installation点击 Chocolatey or Installer点击? Erlang/OTP Version Tree点击win64下载完成后,右击“以管理员身份”安装配置Erlang环境变量 :…

linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?

文章目录65535从哪来的,干啥的?最大并发tcp连接数是多少呢?如何标识一个TCP连接client最大tcp连接数server最大tcp连接数实际的tcp连接数0102TCP怎么建立连接,与端口号是什么关系?(1)Linux服务器…

【分享】订阅万里牛集简云连接器同步企业采购审批至万里牛系统

方案场景 面临着数字化转型的到来,不少公司希望实现业务自动化需求,公司内部将钉钉作为办公系统,万里牛作为ERP系统,两个系统之前的数据都储存在各自的后台,导致数据割裂,数据互不相通,人工手动…

springboot 自动注入源码分析spring.factories

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、铂金手写starter组件,开源starter组件结构 1.项目层级 2. 各个项目引入关系 3.项目侧使用 二、星耀源码跟踪分析 1.SpringApplication.run开…

sHMIctrl智能屏幕使用记录

手上有个案子,“按压机器人”,功能是恒定一个力按下一定时间。 屏幕选型使用“sHMIctrl”,一下记录使用过程中遇到的问题以及解决方法。 目录 问题1:按键控件做定时触发,模拟运行时触发不了。 问题2:厂家…

数字IC设计工程师是做什么的?

随着我国半导体产业的发展,近几年的新入行的从业人员,除了微电子相关专业的,还有就是物理、机械、数学、计算机等专业,很多人对这一高薪行业充满了好奇,那么数字IC设计工程师到底是做什么的? 首先来看看数…

Vue3.x+Element Plus仿制Acro Design简洁模式分页器组件

Vue3.xElement Plus仿制Acro Design简洁模式分页器组件 开发中难免会遇到宽度很窄的列表需要使用分页器的情况,这时若使用Element Plus组件的分页器会导致分页器内容超出展示的区域,而Element Plus组件中目前没有Acro Design那样小巧的分页器&#xff08…

AWS 中文入门开发教学 43- Cloud9 - 云端集成开发环境(IDE)

知识点 Cloud9 - 云的集成开发环境(IDE)的基本介绍 官网 https://aws.amazon.com/cn/cloud9/ 功能 只需一个浏览器即可进行编码,无需配置各种开发环境实时共同编写代码,团队协作直接通过终端访问AWS资源迅速开始新项目无缝集成CodeSeries(Commit,Bu…