2017-10-06 4 views
0

コードの1行で、RDDの最初の10行を取り出してレコードをカウントしようとしています(明らかに10であるはずです)。私はいくつかの操作を行うときしかし、私はエラーを取得する:ここで Scala:traitのメソッドcountの引数がありません

<console>:24: error: missing arguments for method count in trait 
TraversableOnce; 
follow this method with `_' if you want to treat it as a partially applied function 

はコードです:

logfiles.filter(line => line.contains("jpg")).take(10).count 

答えて

3
あなた take(10)は、あなたはもはや RDDを扱っている後

が、Traversable(Scalaのコレクションタイプ)。 countがでフィルタする述語がかかるのであなたは、代わりにcountsizeを使用する:あなたが述べてきたように

val count = logfiles.filter(line => line.contains("jpg")).take(10).size 

あなたRDDは、少なくともその多くのアイテムを持っているように、これは自明常に限り、10個の項目を返します。おそらくRDD.count()を代わりに使用したいと考えています。 RDD

def take(num: Int): Array[T] 

戻り値ArrayないRDDの文書によって示唆されるように

val count = logfiles.filter(line => line.contains("jpg")).count() 
+0

を行うことができますどこに常にしない「これは自明常に10を返します」。しかし、妥当な単純化は 'Math.min(... count()、10)'となります。 –

+0

@Alexeyもちろん、「RDD」には少なくとも10項目あります。 –

1

は、したがってカウント機能は動作しません。

また、RDDでは、10要素を選択する固有の方法はありません。あなたは本当にあなたがおそらく

df.limit(10) will return a dataframe of 10 elements 

データフレームにデータフレームや使用制限機能にRDDを変換する必要があることを行いたい場合は、カウント動作

関連する問題