【发布时间】:2017-11-09 02:54:25
【问题描述】:
刚写了一些 MapReduce 作业后,我正在学习 spark/scala。
我写了一些 java bean 来帮助我在 HDFS 中解析一个文件,我想用它来帮助加快我在 spark 中的进度。
我已经成功加载了我的文件并创建了一个 java bean 对象数组:
val input = sc.textFile("hdfs://host:port/user/test/path/out")
import my.package.Record
val clust_recs = clv_input.map(line => new my.package.Record(line))
clust_recs.map(rec => rec.getPremium()).stats()
但是最后一行会产生这个错误:
<console>:46: error: could not find implicit value for parameter num: Numeric[Double]
我已经测试了这个字段中的值都是有效的,所以我很确定我没有任何可能导致这个错误的空值。
这是一个值的例子:
val dblArray = clust_recs.map(rec => rec.getPremium()).filter(!isNaN(_))
dblArray.take(10)
输出:
res82: Array[Double] = Array(1250.6, 433.72, 567.07, 219.24, 310.32, 2173.48, 195.0, 697.94, 711.46, 42.718050000000005)
我不知道如何解决这个错误,想知道我是否应该放弃使用我已经创建的 JavaBean 对象的概念。
【问题讨论】:
-
my.package.Record是案例类吗? -
不,my.package.Record 是一个 Java 类(传统的 java bean,带有 getter 和 setter)
-
Record.getPremium()的签名是什么? -
什么是 Spark 版本?
标签: scala apache-spark