2016-07-07 1 views
1

Spark(Scalaを使用)のRDDにcsvファイルを読み込もうとしています。私はヘッダを考慮しないようにデータを最初にフィルタリングする機能を作っています。Spark Scalaのタスクがシリアライズできないエラー

def isHeader(line: String): Boolean = { 
line.contains("id_1") 
} 

、その後、私は、次のコマンドを実行しています:

val noheader = rawblocks.filter(x => !isHeader(x)) 

をrawblocks RDDはサイズ

に、私はタスク直列化可能ではないエラーを取得しています26メガバイトであるcsvファイルからデータを読み込みます。何が解決策になりますか?

+5

[mcve]の作成方法。 – zero323

+0

詳細を追加してください。 – Abhi

+0

上記と同じです。 TaskNotSerializableは、関数が呼び出されたクラス内の何かがシリアル化可能でないことを意味します。あなたが外側のコードをもっと提供すれば、私たちは助けることができます。また、あなたのスタックは、どのクラスがシリアライズ可能でないのかを言うべきです。 –

答えて

0

ほとんどの場合、isHeaderメソッドは、シリアライズ可能ではないクラスの中に定義しています。結果として、isHeaderは前記クラスの直列化不可能なインスタンスに結び付けられ、その後、クロージャを介してエグゼキュータに送られる。

別のオブジェクトにisHeaderを定義することもできますし、囲むクラスを直列化することもできます(これは意図していないクラスインスタンス全体を依然として出荷しています)。

関連する問題