2017-04-04 6 views
-4

エラー:RDD変換とアクションは、他の変換の内部ではなく、ドライバによってのみ呼び出すことができます。たとえば、rdd1.map(x => rdd2.values.count() * x)は、rdd1.map変換の内部で値変換およびカウントアクションを実行できないため無効です。詳細については、SPARK-5063を参照してください。RDDの変換とアクションは、マップ内のドライバまたはループ内でのみ呼び出すことができます

val omnitureStitchedEntriesWithExposures: List[OmnitureFeedOutputEntry] = listEntries.map(entry => { 
    val guid = entry.getProp12() 
    val uisObjectListForGuid: Seq[MappedExposureEntry] = uisExposures.lookup(guid) 
    uisObjectListForGuid match { 
     case Nil => 
     logInfo("task=uis_omniture_guid_match, guid=" + guid + " visitorid=" + entry.getXVisitorId()) 
     entry 
     case _ => OmnitureFeedOutputEntry.cloneWithExposures(entry, uisObjectListForGuid) 
    } 
    }) 
+0

だから?あなたの問題は何ですか? –

答えて

0

実際に混同していないドライバーは、それが唯一のDAGにすべてのこれらの変換が追加されますこれらのステートメントを実行し、アクションを呼び出すたびに、クラスタ上で全体のDAGを実行しますか、私たちはワーカーノードを言うことができdoes't。第2の点は、クロージャがワーカーノード上で実行され、RDDが直列化できないため、変換とアクション内でRDD変換とアクションを使用できないことです。

関連する問題