[英]Submitting a Spark Scala (.jar) job via .NET Azure HDInsight API
我一直在嘗試通過.NET中的azure hdinsight api將作業提交給我的Spark集群。 我已經通過Intellij Azure插件-> Submit Spark Application提交給HDInsight來檢查我的scala代碼是否正常,但是通過.net api提交作業時我無法使其正常工作。 (可能是作業提交類型不正確?)我得到一個jobId和一個jobComplete狀態,但是它不能正確寫入輸出。
斯卡拉:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object HDInsightScala{
def main (arg: Array[String]): Unit = {
val conf = new SparkConf().setAppName("HDInsightScala")
val sc = new SparkContext(conf)
val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
//find the rows which have only one digit in the 7th column in the CSV
val rdd1 = rdd.filter(s => s.split(",")(6).length() == 1)
rdd1.saveAsTextFile("wasbs:///myOutputs")
}
}
C#:
public void runCurrentJob()
{
List<string> args = new List<string> {}; // No parameters
// JarFile leads to "wasbs:///tmp/default_artifact.jar"
// JarClass is the name of my main class -> "HDInsightScala"
var parameters = new MapReduceJobSubmissionParameters
{
JarFile = "wasbs:///"+ConfigurationManager.AppSettings["jarPath"],
JarClass = ConfigurationManager.AppSettings["mainClassName"],
//Arguments = args
};
var jobResponse = hdiJobManager.JobManagement.SubmitMapReduceJob(parameters);
var jobID = jobResponse.JobSubmissionJsonResponse.Id;
MessageBox.Show("My job ID is " + jobID + "\n wait for completion . . .");
var jobDetail = hdiJobManager.JobManagement.GetJob(jobID).JobDetail;
while (!jobDetail.Status.JobComplete)
{
Thread.Sleep(1000);
jobDetail = hdiJobManager.JobManagement.GetJob(jobID).JobDetail;
}
MessageBox.Show("JOB IS COMPLETE.");
}
根據您的描述,根據我的理解,您能夠通過Intellij Azure Plugin
將Scala代碼作為Spark作業提交給HDInsight Spark群集,並且可以正常工作。
根據正式文檔“ 使用Azure Toolkit for IntelliJ中的HDInsight工具為HDInsight Spark Linux群集創建Spark應用程序” ,似乎IntelliJ插件將有助於打包您的Scala代碼並將這些作業文件上傳到群集,然后將該作業提交給紗線經理跑步。
因此,要解決您的問題,我認為第一步是檢查是否已將scala代碼打包到作業中並將其上傳到HDFS。 其次,您可以參考REST API https://docs.microsoft.com/en-us/rest/api/hdinsightspark/hdinsight-spark-batch-job#create-a-new-batch-job
嘗試提交通過一些HTTP客戶端(如postman
運行的工作。
然后,您可以按照上述步驟進行故障排除,以調試和改進C#代碼以使其正常運行。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.