将来自社区的Apache Cassandra专家和DataStax聚集在一起。

想学习吗?有一个问题?想分享您的专业知识吗?你是在正确的地方!

不知道从哪里开始? 入门

 

乔什·佩里曼头像图片
乔什·佩里曼 ·

包括application.conf和spark-submit吗?

是否可以提交应用程序配置文件而不将其作为资源编译到jar中?

我正在使用出色的Typesafe Config(//github.com/lightbend/config)与我的数据加载Spark应用程序一起将数据加载到DSE Graph中。我尝试了各种方法,例如:

只需包含conf文件

dse spark-submit  --class com.myorg.dataloader.MySparkLoader --files ./application.conf ./dataloader-spark-1.0.0.jar 

得到:

Exception in thread "main" java.lang.IllegalArgumentException: Graph 'default_graphname' does not exist

表示它使用了resources / reference.conf文件。

包含conf文件并告诉驱动程序

dse spark-submit  --class com.myorg.dataloader.MySparkLoader --files ./application.conf  --driver-java-options "-Dconfig.resource=application.conf" ./dataloader-spark-1.0.0.jar 

得到:

Exception in thread "main" java.lang.ExceptionInInitializerError
....
Caused by: java.io.IOException: resource not found on classpath: application.conf
at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(Parseable.java:726)

表示找不到实际文件

尝试从DSEFS加载

dse spark-submit  --class com.myorg.dataloader.MySparkLoader --files ./application.conf  --driver-java-options "-Dconfig.url=dsefs://application.conf" ./dataloader-spark-1.0.0.jar 

得到:

Exception in thread "main" java.lang.ExceptionInInitializerError
....
Caused by: java.net.MalformedURLException: unknown protocol: dsefs
at java.net.URL.<init>(URL.java:607)

这让我很难过。


有人为DSE Analytics解决了这个问题吗?如果是这样,请您分享语法?我更喜欢 必须将配置加载到DSEFS中,但是如果我可以从命令行配置spark应用程序,则可以这样做。


最后说明:我确实在其他地方使用了命令行参数进行配置,但这在此特定应用程序中是不切实际的。我最基本的配置运行〜200行。

火花dsefs火花提交
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

罗素·斯皮策头像图片
罗素·斯皮策 已回答 ·

根据您需要执行的操作,所有这些操作都很接近。如果仅需要在驱动程序上读取配置类并且您正在客户端模式下运行,则足以使用以下命令启动应用程序


--driver-java-options "-Dconfig.resource=application.conf"


但是,您还必须确保application.conf文件位于类路径上

--driver-class-path "./"

假设您正在从application.conf文件所在的位置提交




如果您正在集群模式下运行,或者要求配置也可以在执行器上访问,那么您还需要

--files ./application.conf


以及

火花.executor.extraClassPath ./


您可以使用"driver"这里的extraClassPath也是如此。




有关其他故障的更多信息,这些文件不能位于非本机文件系统中,因为Config加载程序不使用HDFS文件读取api。


--files仅发送到执行程序的工作目录,而不会强制将它们放在类路径上。

分享
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

乔什·佩里曼头像图片
乔什·佩里曼 已回答 ·

谢谢拉斯!那正是我所需要的。

我目前正在使用单节点设置,因此以下证明已足够:

dse spark-submit  --class com.myorg.dataloader.MySparkLoader --driver-class-path "./"  --driver-java-options "-Dconfig.resource=application.conf" ./dataloader-spark-1.0.0.jar

最终,我将尝试在集群模式下运行,并期望我现在有足够的能力来完成该工作。节日快乐!

分享
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。