gpt4 book ai didi

java - 如何在 HDInsight 中将外部 jar 添加到 Spark?

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:19 25 4
gpt4 key购买 nike

我正在尝试在 Azure 上的 HDInsight Spark 群集中安装 Azure CosmosDB Spark 连接器。 (Github)

我是 Spark 环境的新手,无法找到将连接器 jar 添加到 Spark 配置的正确方法。

我使用的方法:

方法1我将 jar 上传到与 HDInsight 群集关联的 Azure Blob 存储容器上。 (以/jars/为例)我与 Spark 簇头节点建立了 ssh 连接并运行以下命令:

spark-shell --master yarn --conf "spark.executor.extraClassPath="wasb:///example/jars/azure-cosmosdb-spark_2.0.2_2.11-0.0.3.jar" --conf "spar.driver.extraClassPath= "wasb:///example/jar/azure-cosmosdb-spark_2.0.2_2.11-0.0.3.jar"

spark-shell 返回以下内容:

SPARK_MAJOR_VERSION is set to 2, using Spark2
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
17/10/19 15:10:48 WARN SparkContext: Use an existing SparkContext, some configuration may not take effect.
Spark context Web UI available at http://10.0.0.20:4040
Spark context available as 'sc' (master = yarn, app id = application_1508418631913_0014).
Spark session available as 'spark'.

我认为问题在于

SparkContext: Use an existing SparkContext, some configuration may not take effect.

方法2

上传到/examples/jars 后与第一种方法相同。我打开 Ambari UI 并将spark.executor.extraClassPath和spark.driver.extraClassPath添加到spark-Custom-Defaults,其值与方法1中提到的相同。

方法 1方法 2 对我的开发环境没有影响。我尝试导入 com.microsoft.azure.cosmosdb,但解释器找不到它。

方法3我创建了一个 HDInsight 3.6 Spark 集群(不建议在我的情况下使用,因为连接器是在 HDInsight 3.5 上测试的),并使用 Zeppelin 将配置添加到 Livy Interpreter。我尝试了示例代码,发现 Here我遇到了这个错误:

java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTightestCommonType()Lscala/Function2;

经过一番谷歌搜索后,我认为这是一个类版本问题,所以我回到 HDInsight 3.5,但仍然没有结果。

我的问题是:

Spark-Shell --conf 是否应用持久配置或仅适用于 shell session ?

知道将来我将使用 Livy REST API 来执行可能包含此包的远程 PySpark 作业,并且我不想每次提交远程作业时都在配置上运行,如何实现正确的配置?

最佳答案

您可以在启动 Spark-Shell 时添加额外的依赖项:

spark-shell --packages maven-coordinates of the package

在你的情况下:

    spark-shell --packages com.microsoft.azure:azure-cosmosdb-spark_2.1.0_2.11:jar:1.1.2

一个好的做法是将应用程序及其所有依赖项打包:

https://spark.apache.org/docs/latest/submitting-applications.html#bundling-your-applications-dependencies

这也应该适用于 livy。

关于java - 如何在 HDInsight 中将外部 jar 添加到 Spark?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com