2016-04-17 8 views
0

を発行し、私は本当に私はここでApacheのスパークにwith this bookKotlinとスパーク - SAMは、たぶん私は非常にサポートされていない何かをやっている

を学ぶようKotlinを使用したい私が実行しようとしているScalaのコードサンプルです。 flatMap()FlatMapFunction SAMタイプを受け付けます。ここでは

val conf = new SparkConf().setAppName("wordCount") 
val sc = new SparkContext(conf) 
val input = sc.textFile(inputFile) 
val words = input.flatMap(line => line.split(" ")) 

はKotlinでこれを行うには、私の試みです。しかし、それは、4行目のコンパイルの問題を持っている:

val conf = SparkConf().setMaster("local").setAppName("Line Counter") 
val sc = SparkContext(conf) 
val input = sc.textFile("C:\\spark_workspace\\myfile.txt",1) 
val words = input.flatMap{ s:String -> s.split(" ") } //ERROR 

私はそれの上に置くと、私はこのコンパイルエラーを取得:

私は不合理またはサポートされていない何かをやっていますか?私はどちらかラムダで自動補完するために何か提案が表示されていない:(

答えて

3

問題が解決されたという事実にもかかわらず、コンパイルの問題の理由に関するいくつかの情報を提供したいと思います。この例では、inputRDDのタイプを持ち、そのflatMap()メソッドはTraversableOnce[U]を返すラムダを受け入れます。 Scalaには独自のコレクションフレームワークがあるため、JavaコレクションタイプはTraversableOnceに変換できません。

また、Scala Functionが実際にはSAMであるかどうかはわかりません。限り、スクリーンショットから見ることができる限り、KotlinはFunctionインスタンスをラムダで置き換えることを提案していません。

2

ああ、私はそれを考え出した。スパークは、JavaとScalaの両方をサポートしていますので、私は方法があることを知っていた。この特定の問題への鍵何らかの理由でScalaのとKotlinは常にSAMの変換と一緒に得ることはありません。しかし、JavaとKotlinが行う

。代わりに、ScalaのベースSparkContextJavaSparkContextを使用していた...

fun main(args: Array<String>) { 

    val conf = SparkConf().setMaster("local").setAppName("Line Counter") 
    val sc = JavaSparkContext(conf) 
    val input = sc.textFile("C:\\spark_workspace\\myfile.txt",1) 
    val words = input.flatMap { it.split(" ") } 

} 
関連する問題