2016-03-26 16 views
0

Yeniden ölçeklendirmede yeniyim ve Hadoop kesin kılavuzundan programın maksimum sıcaklığını çalıştırmaya çalıştım ancak sonuncu durumda hata dizisini hata özel durumunun dışına çıkarıyor. Ve kitaptaki kodu açıkça anlayamıyorum. Aşağıda Spark Tanımlama kılavuzuna göre maksimum sıcaklık örneği

kod

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(_)) 
} 
} 

Onların dosyayı okuyor ve bu bölünmüş ve harita işlevi sonra farklı RDD için bölünmüş ve harita işlevi yıkmak için çalıştı elde etmiyorsam sadece o noktaya alıyorum olduğunu ama herhangi bir işe yaramadı, herkes bana her adım için çıkışı nasıl kontrol edeceğimi önerebilir.

Teşekkür & Selamlar Amit

+3

İstisna hangi satırı verir? Ayrıca, “rec” için kullanılan açık indeksler olduğundan, giriş dosyasının formatına ve en az 3 girişe sahip olan her satıra güveniyorsunuz - bu, neye benzediğini söyleyebilir misiniz? –

+0

Sorun, giriş metin dosyasının biçimlendirilmesidir. Boş satırlar olmamalı ve her satırda 3 veya daha fazla sekme ayrılmış değişken olmalıdır. – gonephishing

+0

Merhaba, bu satırın dosyalarını işlemeye çalışıyorum, ancak satırda mevcut değil ve ben arzu sonucunu alabilmem için satır sekmesini bölemem gerektiğinden emin değilim. Bu lütfen 0067011990999991949010107004 + 68.750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAA199000591AY131999GF108991999999999999999999KA1999N-01001MW1101 0043011990999991949010112004 + 68750 + 023550FM-12 + 038299999V0201801N006719999999N9999999N9-00281 + 99999999999ADDAY131999GF108991999999999999999999MW1361 –

cevap

0

aşağıda kod yardımcı olabilir olabilir deneyin: -

Numune girişi: - 91 67 Agra Uttar Pradesh 33 19 90 67 Allahabad Uttar Pradesh 32 19 87 60 Amritsar Pencap 30 15 89 66 Bhopal Madya Pradeş 32 19 87 62 Chandigarh 30 17 82 60 Dehradun Uttarkand 28 15 89 64 Indore Madya Pradeş 32 18 89 65 Lucknow Uttar Pradesh 40 18

Amaç: - Özellikle devlet İşte

maksimum sıcaklığını bulmak programımızı gelir: -

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") 
    } 

} 

çalıştırın yukarıdaki program ve benzeri çıktıyı alırsınız: - böylece (Cammu ve Keşmir, 20) (Madya Pradeş, 32)

(Bihar, 31) ve .. önemli

: - ı girişler sekmeyle ayrılmış