在 scala returns 中的数组上区分一个空字符串
Distinct on an array in scala returns an empty string
我正在尝试通过 GitHub
中的这段代码 click here 学习 graphx
在 spark-shell 上,当我尝试这个时:
def parseFlight(str: String): Flight = {
val line = str.split(",")
Flight(line(0), line(1), line(2), line(3), line(4).toInt, line(5).toLong, line(6), line(7).toLong, line(8), line(9).toDouble, line(10).toDouble, line(11).toDouble, line(12).toDouble, line(13).toDouble, line(14).toDouble, line(15).toDouble, line(16).toInt)
}
val textRDD = sc.textFile("/user/user01/data/rita2014jan.csv")
val flightsRDD = textRDD.map(parseFlight).cache()
val airports = flightsRDD.map(flight => (flight.org_id, flight.origin)).distinct
airports.take(1)
我得到这个指向 airports.take(1)
:
的异常
java.lang.NumberFormatException: empty String
如果我遗漏了什么,谁能告诉我?
它很可能来自您输入中的一行,其中您要转换为 Double 的字段为空。
错误很可能来自此函数(在 spark 管道的开头应用):
def parseFlight(str: String): Flight = {
val line = str.split(",")
Flight(line(0), line(1), line(2), line(3), line(4).toInt, line(5).toLong, line(6), line(7).toLong, line(8), line(9).toDouble, line(10).toDouble, line(11).toDouble, line(12).toDouble, line(13).toDouble, line(14).toDouble, line(15).toDouble, line(16).toInt)
}
在某些时候,强制转换 .toDouble
应用于 ""
(空字符串)。
例如,您可以通过这样做来重现相同的错误:
"aa,,,s".split(",")(2).toDouble
产生:
java.lang.NumberFormatException: empty String
错误让您认为它来自包含 airports.take(1)
的行,因为它是包含管道的第一个 action
的行(这是 RDD 的惰性丢失的地方- 与 map 等转换相反)。
我正在尝试通过 GitHub
中的这段代码 click here 学习 graphx在 spark-shell 上,当我尝试这个时:
def parseFlight(str: String): Flight = {
val line = str.split(",")
Flight(line(0), line(1), line(2), line(3), line(4).toInt, line(5).toLong, line(6), line(7).toLong, line(8), line(9).toDouble, line(10).toDouble, line(11).toDouble, line(12).toDouble, line(13).toDouble, line(14).toDouble, line(15).toDouble, line(16).toInt)
}
val textRDD = sc.textFile("/user/user01/data/rita2014jan.csv")
val flightsRDD = textRDD.map(parseFlight).cache()
val airports = flightsRDD.map(flight => (flight.org_id, flight.origin)).distinct
airports.take(1)
我得到这个指向 airports.take(1)
:
java.lang.NumberFormatException: empty String
如果我遗漏了什么,谁能告诉我?
它很可能来自您输入中的一行,其中您要转换为 Double 的字段为空。
错误很可能来自此函数(在 spark 管道的开头应用):
def parseFlight(str: String): Flight = {
val line = str.split(",")
Flight(line(0), line(1), line(2), line(3), line(4).toInt, line(5).toLong, line(6), line(7).toLong, line(8), line(9).toDouble, line(10).toDouble, line(11).toDouble, line(12).toDouble, line(13).toDouble, line(14).toDouble, line(15).toDouble, line(16).toInt)
}
在某些时候,强制转换 .toDouble
应用于 ""
(空字符串)。
例如,您可以通过这样做来重现相同的错误:
"aa,,,s".split(",")(2).toDouble
产生:
java.lang.NumberFormatException: empty String
错误让您认为它来自包含 airports.take(1)
的行,因为它是包含管道的第一个 action
的行(这是 RDD 的惰性丢失的地方- 与 map 等转换相反)。