从旧 Vertica Spark 连接器迁移

如果您有使用闭源 Vertica Spark 连接器的现有 Spark 应用程序,则必须更新它们以使用较新的开源连接器。新连接器具有新的功能、更好的性能,并且还在持续开发中。旧连接器已停止使用。

旧连接器和新连接器之间的部署更改

旧连接器仅随 Vertica 服务器安装一起分发。新连接器通过多个渠道分发,为您提供更多部署方式。

新 Spark 连接器可从 Maven Central 获取。如果您使用 Gradle、Maven 或 SBT 来管理 Spark 应用程序,您可能会发现使用依赖项部署 Spark 连接器比在 Spark 群集上手动安装更方便。将连接器作为依赖项集成到您的 Spark 项目中,可以轻松更新到较新版本的连接器 — 只需在依赖项中更新所需版本即可。有关详细信息,请参阅从 Maven Central 获取连接器

您还可以下载预编译的连接器程序集或从源代码构建它。在这种情况下,您必须将连接器部署到您的 Spark 群集。旧连接器依赖于 Vertica JDBC 驱动程序,需要您单独包含它。新连接器是一个包含所有依赖项的程序集,包括 JDBC 驱动程序。您只需将包含 Spark 连接器的单个 JAR 文件部署到您的 Spark 群集即可。

您可以让 Spark 同时加载旧连接器和新连接器,因为新连接器的主类名称不同(见下文)。通过此重命名,您可以将新连接器添加到 Spark 配置文件中,而无需立即将使用旧连接器的所有 Spark 应用程序移植到新 API。您可以将新的程序集 JAR 文件添加到 spark-defaults.conf 文件中的 spark-jars 列表中。

API 变更

从旧连接器到新连接器的一些 API 变更需要更改您的 Spark 应用程序。

不再支持 VerticaRDD 类

旧连接器支持名为 VerticaRDD 的类,以使用 Spark 弹性分布式数据集 (RDD) 功能从 Vertica 加载数据。新连接器不支持这个单独的类。相反,如果您想直接操作 RDD,请通过您使用 DataSource API 创建的 DataFrame 对象来访问它。

DefaultSource 类重命名为 VerticaSource

旧连接器中的主类名为 DataSource。在新连接器中,此类已重命名为 VerticaSource。这种重命名支持两个连接器共存,允许您逐步转换 Spark 应用程序。

要使现有 Spark 应用程序使用新连接器,您必须将对 DataSource 类的调用更改为 VerticaSource 类。例如,假设您的 Spark 应用程序使用以下方法调用来从旧连接器读取数据:

spark.read.format("com.vertica.spark.datasource.DefaultSource").options(opts).load()

那么,为了让它使用新连接器,应使用以下方法调用:

spark.read.format("com.vertica.spark.datasource.VerticaSource").options(opts).load()

发生变化的 API 选项

除了将 DataSource 类重命名为 VerticaSource 之外,主连接器类的一些选项名称也发生了变化。不再支持其他选项。如果要将 Spark 应用程序从旧连接器移植到使用以下选项之一的新连接器,则必须更新代码:

此外,新连接器还添加了支持 Kerberos 身份验证等新功能的选项。有关连接器的 VerticaSource 选项 API 的详细信息,请参阅 Vertica Spark 连接器 GitHub 项目

利用新功能

新 Vertica Spark 连接器提供您可能想要利用的新功能。

目前,最值得注意的新功能是:

  • Kerberos 身份验证。此功能允许您配置连接器以实现与 Vertica 的无密码连接。有关使用此功能的详细信息,请参阅 Vertica Spark 连接器 GitHub 项目中的 Kerberos 文档

  • 支持使用 S3 进行中间存储。通过此选项,您可以避免仅为托管 HDFS 存储位置而设置 Hadoop 群集。请参阅连接器 GitHub 站点上的 S3 用户指南