私はスカラが初めてで、Hadoop決定的なガイドからプログラムの最高温度を実行しようとしましたが、最後にエラー配列をスローしています。そして、本に書かれているコードをはっきりと理解することができません。以下はスパーク確定ガイドによる最高温度の例
私は、彼らがファイルを読んでいるだけでポイントを取得していますし、その分割し、マップ関数の後、私は別のRDDに分割し、マップ機能を打破しようとしたばかりではないのですコード
import org.apache.spark.SparkContext._
import org.apache.spark.{SparkConf, SparkContext}
object MaxTemperature {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Max Temperature").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("011990-99999-1949.txt")
val records = lines.map(_.split("\t"))
val filtered = records.filter(rec => (rec(1) != "9999"
&& rec(2).matches("[01459]")))
val tuples = filtered.map(rec => (rec(0).toInt, rec(1).toInt))
val maxTemps = tuples.reduceByKey((a, b) => Math.max(a, b))
maxTemps.foreach(println(_))
}
}
です有用なものが得られていない人は誰でも私に各ステップの出力をチェックする方法を提案することができます。
おかげ&よろしく アミット
どのラインが例外ですか?また、明示的なインデックスがあるので、 'rec'のために入力ファイルのフォーマットと少なくとも3つのエンティティーを持つすべてのラインに依存しています。そのように見えますか? –
問題は入力テキストファイルの書式設定にあります。空行がなくても、すべての行に3つ以上のタブ区切り変数があるはずです。 – gonephishing
こんにちは、私はファイルのこれらの行を処理しようとしていますが、\ t行が存在していないと私は欲望の結果を得ることができるように私はタブで行を分割する必要がありますわからない。 0067011990999991949010107004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAA199000591AY131999GF108991999999999999999999KA1999N-01001MW1101 0043011990999991949010112004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAY131999GF108991999999999999999999MW1361 –