【发布时间】:2016-12-19 20:07:21
【问题描述】:
我使用 Scala 2.11.8 和 Spark 2.0.1 来运行我的代码。在这行代码中:
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()
}
}
此代码基于 Scala 2.10.x 和 Spark 1.X,我认为错误是因为版本控制。
我从 .csv 文件中读取数据,将其拆分为(用户、产品、价格)作为 RDD。一切都是正确的,但这里的方法toDouble 没有解决。这样做的正确方法是什么?
数据在表格中
阿里,食物,123
在 .csv 文件中
【问题讨论】:
-
你重新编译代码了吗?如果您使用在 scala 2.10.x 中编译的代码,则会导致问题。另外,价格类型是什么?如果您从某个地方读取它,它可能已被转换为不受支持的类型。例如,如果价格是不是双精度的字符串,则可能会导致问题。此外,如果字符串为空,则可能会导致类似问题。您的确切错误信息是什么?
-
请添加您遇到的错误和足够的代码来重现您的问题。
标签: scala apache-spark