我希望在现有的(独立的) spark集群(在Ubuntu Linux上)上试用C#驱动程序,我可以通过python或scala与之进行愉快的交互。
我不清楚如何运行一个简单的c#示例,因为我已经将最新的Mobius发行版下载到了linux box。我不清楚的是clr spark提交所需的两个额外参数(除了通常需要的参数之外)。当我尝试按照文档中的提交参数操作时,我遇到了各种各样的错误(或者我误解了说明)
首先,对于--exe,是简单地指向.exe文件还是需要传递它;--exe mono params其次,remote- spark -clr似乎坚持使用HDFS路径,但我运行的spark没有HDFS。HDFS真的有必要吗?第三,与问题(二)有关,如果为工作进程分发exe/包,这些包是否也必须位于hdfs路径中,或者我是否可以将它们放在“常规”文件系统中的合理位置。
简而言之,我正在寻找确认HDFS不是必需的,以及可以在某些位置运行exe的简单的一行提交示例。令人遗憾的是,我尝试过的组合对我不起作用。
发布于 2017-02-08 18:19:23
在Linux上运行Mobius需要一个小技巧:
如果您的应用程序名为Driver.exe,我建议您创建一个包含以下内容的文件driver.sh.exe:
#!/bin/sh
exec mono ./Driver.exe "$@"同样,创建一个包含以下内容的文件CSharpDriver.sh.exe:
#!/bin/sh
exec mono ./CSharpWorker.exe "$@"在您的App.config中,在appSettings中设置以下值:
<add key="CSharpWorkerPath" value="CSharpWorker.sh.exe"/>最后,在提交应用程序时,请使用以下参数:
$SPARKCLR_HOME/scripts/sparkclr-submit.sh \
--master yarn \
--deploy-mode client \
--exe driver.sh.exe \
/path/to/driver请注意,--exe参数只接受文件名,路径是下一个参数。
您可以将应用程序放在常规文件系统上(不需要使用HDFS),但根据我的经验,Mobius将在内部使用HDFS将应用程序分发给工作人员。我不知道你能不能避免。
https://stackoverflow.com/questions/41883002
复制相似问题