如何使用 init 脚本以编程方式将 Maven 库安装到集群?

How do I programmatically install Maven libraries to a cluster using init scripts?

现在已经尝试了一段时间,我确信解决方案很简单,只是在努力寻找它。我很新,所以对我放轻松..!

需要使用预制初始化脚本执行此操作,然后在配置集群时在 UI 中选择。

我正在尝试将 com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.18 安装到 Azure Databricks 上的集群。按照文档示例(它正在安装 postgresql 驱动程序),他们使用以下命令生成一个初始化脚本:

dbutils.fs.put("/databricks/scripts/postgresql-install.sh","""
#!/bin/bash
wget --quiet -O /mnt/driver-daemon/jars/postgresql-42.2.2.jar https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.2/postgresql-42.2.2.jar""", True)```

我的问题是,这段代码的 /mnt/driver-daemon/jars/postgresql-42.2.2.jar 部分是什么?我需要做什么才能使这项工作适合我的情况?

非常感谢。

/mnt/driver-daemon/jars/postgresql-42.2.2.jar 这里是放置jar文件的输出路径。但这是没有意义的,因为这个 jar 不会被放入 CLASSPATH 中,也不会被 Spark 找到。需要将 Jar 放入 /databricks/jars/ 目录,Spark 会自动在该目录中提取它们。

但是这种下载 jar 的方法仅适用于没有依赖项的 jar,而对于像 EventHubs 连接器这样的库,情况并非如此 - 如果没有下载依赖项,它们将不起作用。相反,最好使用 Cluster UI 或 Libraries API(或 Jobs API for jobs)——使用这些方法,所有依赖项也将被获取。

P.S。但实际上,与其使用 EventHubs 连接器,还不如使用 EventHubs 也支持的 Kafka 协议。有几个原因:

  • 从性能的角度来看更好
  • 从稳定性的角度来看更好
  • Kafka 连接器包含在 DBR 中,因此您无需安装任何额外的东西

您可以在 EventHubs documentation.

中阅读如何使用 Spark + EventHubs + Kafka 连接器