Greenplum-Spark Connector 介绍

了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站

1. 前序

Greenplum 是一款优秀的 mpp 数据库产品,官方推荐了几种将外部数据写入 Greenplum 方式,包含:通用的 Jdbc,gpload 以及 Pivotal Greenplum-Spark Connector 等。

  • Jdbc:Jdbc 方式,写大数据量会很慢。
  • gpload:适合写大数据量数据,能并行写入。但其缺点是需要安装客户端,包括 gpfdist等依赖,安装起来很麻烦。需要了解可以参考 gpload。
  • Greenplum-Spark Connector:基于 Spark并行处理,并行写入 Greenplum,并提供了并行读取的接口。也是接下来该文重点介绍的部分。

2. Greenplum-Spark Connector 读数据架构

一个 Spark application,是由 Driver 和 Executor 节点构成。当 Spark Application 使用 Greenplum-Spark Connector 加载 Greenplum 数据时,其 Driver 端会通过 JDBC 的方式请求 Greenplum 的 master 节点获取相关的元数据信息。Connector 将会根据这些元数据信息去决定 Spark 的 Executor 去怎样去并行的读取该表的数据。

Greenplum 数据库存储数据是按 segment 组织的,Greenplum-Spark Connector 在加载 Greenplum 数据时,需要指定 Greenplum 表的一个字段作为 Spark 的 partition 字段,Connector 会使用这个字段的值来计算,该 Greenplum 表的某个 segment 该被哪一个或多个 Spark partition 读取。

其读取过程如下:

  1. Spark Driver 通过 Jdbc 的方式连接 Greenplum master,并读取指定表的相关元数据信息。然后根据指定的分区字段以及分区个数去决定 segment 怎么分配。
  2. Spark Executor 端会通过 Jdbc 的方式连接 Greenplum master,创建 Greenplum 外部表。
  3. 然后 Spark Executor 通过 Http 方式连接 Greenplum 的数据节点,获取指定的 segment 的数据。该获取数据的操作在 Spark Executor 并行执行。

【Greenplum ETL】Greenplum-Spark Connector 介绍

3. Greenplum-Spark Connector 写数据流程

1.GSC 在 Spark Executor 端通过 Jetty 启动一个 Http 服务,将该服务封装为支持 Greenplum 的 gpfdist 协议。

2.GSC 在 Spark Executor 端通过 Jdbc 方式连接 Greenplum master,创建 Greenplum 外部表,该外部表文件地址指向该 Executor 所启动的 gpfdist 协议地址。SQL示例如下:

CREATE READABLE EXTERNAL TABLE"public"."spark_9dc823a6fa48df60_3d9d854163f8f07a_1_42" (LIKE "public"."rank_a1")LOCATION ('gp
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值