2017-02-02 7 views
0

.NET의 azure hdinsight API를 통해 spark 클러스터에 작업을 제출하려고했습니다. Intellij Azure Plugin을 통해 제출 한 스칼라 코드가 HDInsight에 제출하십시오.하지만 .net API를 통해 작업을 제출할 때 작동하지 않습니다. (아마도 작업 제출 유형이 올바르지 않습니까?) jobId 및 jobComplete 상태를 얻지 만 출력을 올바르게 작성하지 않습니다..NET Azure HDInsight API를 통해 Spark Scala (.jar) 작업 제출

스칼라 :

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."); 
    } 

답변

0

내 이해를 바탕으로 여러분의 설명에 따르면, 당신은 Intellij Azure Plugin를 통해 HDInsight 스파크 클러스터에 스파크 작업으로 당신의 스칼라 코드를 제출 할 수 있었다 작동합니다.

공식 문서 Use HDInsight Tools in Azure Toolkit for IntelliJ to create Spark applications for HDInsight Spark Linux cluster에 따르면 IntelliJ 플러그인이 스칼라 코드를 패키징하고 이러한 작업 파일을 클러스터로 업로드 한 다음 작업을 실 운영자에게 제출하여 실행하도록하는 것으로 보입니다.

문제를 해결하기 위해 먼저 스칼라 코드를 작업 패키지로 패키징하여 HDFS에 업로드했는지 확인하는 것이 가장 좋습니다. 두 번째로 REST API https://docs.microsoft.com/en-us/rest/api/hdinsightspark/hdinsight-spark-batch-job#create-a-new-batch-job을 참조하여 postman과 같은 일부 HTTP 클라이언트를 통해 실행되도록 작업을 제출하십시오.

그런 다음 문제 해결을 위해 위의 단계를 수행하여 &을 디버그하여 작동하도록 C# 코드를 향상시킬 수 있습니다. 희망이 도움이됩니다.

+0

RESTsharp를 사용하여 livy/batch에 게시 할 수있었습니다! 감사합니다. – jpsca1293