我为Word计数编写了这个scala程序。主要课程如下:
object aaa{
def main(args:Array[String]) : Int = {
val conf = new Configuration()
val otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs
if (otherArgs.length != 2) {
println("Usage: wordcount <in> <out>")
return 2
}
val job = new Job(conf, "word count")
job.setJarByClass(classOf[TokenizerMapper])
job.setMapperClass(classOf[TokenizerMapper])
job.setCombinerClass(classOf[IntSumReducer])
job.setReducerClass(classOf[IntSumReducer])
job.setOutputKeyClass(classOf[Text])
job.setOutputValueClass(classOf[IntWritable])
FileInputFormat.addInputPath(job, new Path(args(0)))
FileOutputFormat.setOutputPath(job, new Path((args(1))))
if (job.waitForCompletion(true)) 0 else 1
}
}
我在这里收到警告: &#34; aaa有一个主参数类型为Array [String]的方法,但是Hadooop.aaa不是一个可运行的程序。原因:main方法必须有精确的签名(Array [String])Unit&#34;
如何解决这个问题?此外,我无法在RunConfiguration中加载此类。请帮我解决这个问题。
答案 0 :(得分:2)
您可能对使用: Int
声明为main的地方感到愤怒。
尝试用
替换你的main声明def main(args:Array[String]) : Unit = {
//...
}
对于带有退出代码的每次退货,请根据具体情况调用System.exit(1)
或System.exit(0)
。
我确信你正在寻找一个更优雅的终止,但这应该是你想要的。