Spark最高温度示例由权威指南

时间:2016-03-26 18:06:07

标签: scala apache-spark

我是scala的新手,我尝试从Hadoop权威指南执行程序最高温度,但它最后将错误数组抛出绑定异常。我无法清楚地理解书中的代码。

以下是代码

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

我只是说他们正在读取文件,然后在分割和地图功能之后我没有尝试将分割和地图功能分解为不同的RDD但没有得到有用的东西任何人都可以建议我如何检查每个步骤的输出。

谢谢&问候 阿米特

1 个答案:

答案 0 :(得分:0)

请尝试下面的代码可能会有所帮助: -

示例输入: - 91 67 Agra Uttar Pradesh 33 19 90 67 Allahabad Uttar Pradesh 32 19 87 60阿姆利则旁遮普邦30 15 89 66 Bhopal Madhya Pradesh 32 19 87 62 Chandigarh Chandigarh 30 17 82 60 Dehradun Uttarakhand 28 15 89 64 Indore Madhya Pradesh 32 18 89 65 Lucknow Uttar Pradesh 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岁)(Madhya Pradesh,32岁)

(比哈尔,31岁)等等。

重要: - 我 输入以制表符分隔