【发布时间】:2017-11-22 16:18:44
【问题描述】:
我在 scala 中编写了一个简单的驱动程序类,它使用 spark-sql-kafka 进行结构化流。我已经使用 eclipse+maven 将它打包到一个 jar 中。 pom.xml文件的相关部分如下:
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-csv_2.11</artifactId>
<version>1.5.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql-kafka-0-10_2.11</artifactId>
<version>2.0.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
我使用以下命令将生成的 jar 文件提交给spark-submit:
spark-submit --properties-file {path}/kafka-streaming-conf --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.0.2 --class TestStreamDriver --master yarn {path}/StructuredStreaming-1.0-SNAPSHOT.jar
kafka-streaming-conf如下:
spark.executor.extraJavaOptions -Dhttp.proxyHost=proxyName -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxyName -Dhttps.proxyPort=8080
spark.jars.ivySettings {path}/ivysettings_proxy.xml
ivysettings_proxy.xml文件如下:
<ivysettings>
<settings defaultResolver="default" />
<credentials host = "proxyName:8080" username = "" passwd = ""/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-local.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
我还将JAVA_OPTS 变量更改为:
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=proxyName -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxyName -Dhttps.proxyPort=8080"
当我使用上述命令运行 spark-submit 时,它会尝试从 maven 存储库和其他 url 下载,然后存在 Connection timed out 错误。
如何通过代理制作 spark-submit 下载依赖项?
谢谢。
【问题讨论】:
-
检查代理连接和配置的存储库,但暂时您可以手动下载该 jar 并提供带有 --jar 选项的 spark-submit。
-
感谢您的回答。添加罐子或制作肥罐对我不起作用。我能够找到一个解决方案,我总结如下。
-
您提到的解决方案与我怀疑并要求检查的回购连接配置相关。除非您指定 --packages 选项和 --jar 选项,否则添加 jars 选项肯定会起作用。
标签: scala maven apache-spark