2016-03-26 6 views
0

私はスカラが初めてで、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(_)) 
} 
} 

です有用なものが得られていない人は誰でも私に各ステップの出力をチェックする方法を提案することができます。

おかげ&よろしく アミット

+3

どのラインが例外ですか?また、明示的なインデックスがあるので、 'rec'のために入力ファイルのフォーマットと少なくとも3つのエンティティーを持つすべてのラインに依存しています。そのように見えますか? –

+0

問題は入力テキストファイルの書式設定にあります。空行がなくても、すべての行に3つ以上のタブ区切り変数があるはずです。 – gonephishing

+0

こんにちは、私はファイルのこれらの行を処理しようとしていますが、\ t行が存在していないと私は欲望の結果を得ることができるように私はタブで行を分割する必要がありますわからない。 0067011990999991949010107004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAA199000591AY131999GF108991999999999999999999KA1999N-01001MW1101 0043011990999991949010112004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAY131999GF108991999999999999999999MW1361 –

答えて

0

以下のコードは、それは助けることができるかもしれ試してください。 -

サンプル入力: - 91 67アグラウッタル・プラデーシュ33 19 90 67アラハバードウッタル・プラデーシュ32 19 87 60アムリトサルパンジャブ30 15 89 66ボパールマドヤプラデシュ32 19 87 62チャンディガルチャンディガル30 17 82 60デラドゥンウッタラーカンド28 15 89 64インドールマドヤプラデシュ32 18 89 65ラクナウウッタル・プラデーシュ40 18

目的: - ここに

は、私たちのプログラムは来る特定の状態の最高温度を見つける: -

import org.apache.spark._; 

object testfilter extends App { 
    val conf=new SparkConf().setMaster("local[2]").setAppName("testfilter") 
    val sc = new SparkContext(conf) 
    System.setProperty("hadoop.home.dir", "c://winutil//") 
    val input=sc.textFile("file:///D://sparkprog//temp//stats.txt") 
    val line=input.map(x=>x.split("\t")) 
    val city=line.map(x=>(x(3)+"\t" + x(4))) 
    val rdd3=city.map(x=>x.split("\t")) 
    val maintemp=rdd3.map(x=>((x(0),x(1)))) 
    val grp= maintemp.groupByKey() 
    val main = grp.map{case (x,iter) => (x,iter.toList.max)} 


    for (i<- main) 
    { 
    print(i) 
    print("\n") 
    } 

} 

は、上記のプログラムを実行し、私たちはのような出力が得られます: - ように(ジャムカシミール、20)(マドヤプラデシュ、32)

(ビハール、31)と..重要

: - 私は nputsはタブで区切られています

関連する問題