簡體   English   中英

通過.NET Azure HDInsight API提交Spark Scala(.jar)作業

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM