2
私はスパークするのが新しいです。私はsc.textFile
とcsvファイルをロードしました。 reduceByKeyを使用して、文字列型の数値を含む列を合計します。 私はこのようなものを試してみると、reduceByKey(_ + _)
はちょうどお互いの隣に数字を置きます。 どうすればいいですか?列を変換する必要がありますか?rdd形式の文字列を合計するにはどうすればよいですか?
私はスパークするのが新しいです。私はsc.textFile
とcsvファイルをロードしました。 reduceByKeyを使用して、文字列型の数値を含む列を合計します。 私はこのようなものを試してみると、reduceByKey(_ + _)
はちょうどお互いの隣に数字を置きます。 どうすればいいですか?列を変換する必要がありますか?rdd形式の文字列を合計するにはどうすればよいですか?
あなたは、たとえば、文字列を解析する必要があります。
scala> val rdd = sc.parallelize(Seq(("a", "1"), ("a", "2.7128"), ("b", "3.14"),
("b", "4"), ("b", "POTATO")))
rdd: org.apache.spark.rdd.RDD[(String, String)] = ParallelCollectionRDD[57] at parallelize at <console>:27
scala> def parseDouble(s: String) = try { Some(s.toDouble) } catch { case _ => None }
parseDouble: (s: String)Option[Double]
scala> val reduced = rdd.flatMapValues(parseDouble).reduceByKey(_+_)
reduced: org.apache.spark.rdd.RDD[(String, Double)] = ShuffledRDD[59] at reduceByKey at <console>:31
scala> reduced.collect.foreach{println}
(a,3.7128)
(b,7.140000000000001)
あなたのプログラムがどこにあるの? – Sachith
のエラーが発生しました。列型を 'Int'のようなより関連性の高い型に変更できませんか?強い型付けされた値を持つことは一般的な良い方法であり、ここで問題を大幅に簡素化します。 –