2016-12-19 2 views
0

코드 실행을 위해 Scala 2.11.8 및 Spark 2.0.1을 사용합니다. 이 코드 줄에서 :Scala 및 Spark 실행 중 오류

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 

object training { 
    def main(args: Array[String]): Unit = { 
    val conf = new SparkConf().setAppName("test").setMaster("local[4]") 
    val sc = new SparkContext(conf) 
    val data = sc.textFile("/home/ahoora/data.csv") 

    // create RDDs from data in form (user, product, price) 
    data.map(line => line.split(",")).map(purchaserecord => (purchaserecord(0), purchaserecord(1), purchaserecord(2))) 

    // Our total revenue 
    val totalRevenue = data.map{ case (user, product, price) => price.toDouble}.sum() 
    sc.stop() 
    } 
} 

이 코드는 스칼라 2.10.x를 기반으로 스파크 1.X, 나는 오류 때문에 버전의 생각합니다. (사용자, 제품, 가격)을 RDD로 분리 한 .csv 파일에서 데이터를 읽었습니다. 모든 것은 정확했지만 여기에서는 toDouble 메서드가 해결되지 않았습니다. 그렇게하는 올바른 방법은 무엇입니까?

데이터는 원본 (RDD[String]을 입력했다) data 아니라 수정 RDD를 사용하고

+0

문제를 재현하는 당신이 오류 충분한 코드를 추가하십시오 : 당신이 변환의 결과를 사용하려는 경우 RDDs는 (같은 map)이 그 변화에서 반환 된 값을 사용해야 불변 있습니다 . – maasg

+0

코드를 다시 컴파일 했습니까? scala 2.10.x에서 컴파일 된 코드를 사용하면 문제가 발생할 수 있습니다. 또한 가격 유형은 무엇입니까? 어딘가에서 읽으면 지원되지 않는 유형으로 변환되었을 수 있습니다. 예를 들어 price가 double이 아닌 string 인 경우 문제가 발생할 수 있습니다. 또한 string이 null 인 경우 비슷한 문제가 발생할 수 있습니다. 정확한 오류 메시지는 무엇입니까? –

답변

1

가 분할에 의해 생성 된 .csv 파일 형태로

알리, 음식, 123

있습니다 문자열을 3-tuples (형식 : RDD[(String, String, String)])로 변환합니다.

val data = sc.textFile("/home/ahoora/data.csv") 

// create RDDs from data in form (user, product, price) 
val split = data.map(line => line.split(",")).map(purchaserecord => (purchaserecord(0), purchaserecord(1), purchaserecord(2))) 

// Our total revenue 
val totalRevenue = split.map{ case (user, product, price) => price.toDouble}.sum()