我希望尝试使用现有的(独立的)spark集群(在Ubuntu Linux上)的C#驱动程序,我通过python或scala愉快地进行交互。
我不清楚如何运行一个简单的c#示例,已将最新的Mobius版本下载到linux框中。我不清楚的是clr spark提交所需的两个额外参数(超出通常所需的参数)。当我尝试按照文档记录提交参数时(或者我误解了指令),我遇到了各种错误。
首先,对于--exe,只需指向.exe文件或是否需要传递; --exe [mono] [my_app.exe] [params] 其次,remote-spark-clr似乎坚持HDFS路径,但我在没有HDFS的情况下运行spark。 HDFS真的有必要吗? 第三,与问题(二)相关,如果为工人分配exe /包,那么这些也必须在hdfs路径中,或者我可以把它们放在#34;常规"文件系统。
简而言之,我正在寻找不需要HDFS的确认和一个简单的单行提交示例,它可以在某个位置运行exe。我试过的组合对我来说不是很好。
答案 0 :(得分:0)
在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将应用程序分发给工作人员。我不知道你是否可以避免它。