2017-02-23 24 views
1

YARNのSparkでscipy cosineの類似性を使って次のudfを実行しました。私はまずデータのサンプルを30回観察しました。それはうまく走って5秒でコサイン類似度行列を作成します。ここSpark java.lang.NoSuchMethodError

はコードです:

def cosineSimilarity(df): 
    """ Cosine similarity of the each document with other 

    """ 

    from pyspark.sql.functions import udf 
    from pyspark.sql.types import DoubleType 
    from scipy.spatial import distance 

    cosine = udf(lambda v1, v2: (
    float(1-distance.cosine(v1, v2)) if v1 is not None and v2 is not None else None), 
    DoubleType()) 

    # Creating a cross product of the table to get the cosine similarity vectors 

    crosstabDF=df.withColumnRenamed('id','id_1').withColumnRenamed('w2v_vector','w2v_vector_1')\ 
    .join(df.withColumnRenamed('id','id_2').withColumnRenamed('w2v_vector','w2v_vector_2')) 

    similardocs_df= crosstabDF.withColumn('cosinesim', cosine("w2v_vector_1","w2v_vector_2")) 

    return similardocs_df 

#similardocs_df=cosineSimilarity(w2vdf.select('id','w2v_vector')) 


similardocs_df=cosineSimilarity(w2vdf_sample.select('id','w2v_vector')) 

その後、私は全体のマトリックス(58Kレコード)を渡そうとしましたし、それがしばらく実行され、その後、私は次のエラーを与えている:

私は希望します言うまでもなく、5分以内にデータ全体に対して1回実行されました。しかし今、データ全体で、問題なしでサンプルを実行している間、このエラーが表示されます。私もpysparkでこのエラーを経てい

WARN org.spark_project.jetty.servlet.ServletHandler (ServletHandler.java:doHandle(667)) - Error for /jobs/ 
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getDispatcherType()Ljavax/servlet/DispatcherType; 
    at org.spark_project.jetty.servlets.gzip.AbstractCompressedStream.doCompress(AbstractCompressedStream.java:248) 
    at org.spark_project.jetty.servlets.gzip.AbstractCompressedStream.checkOut(AbstractCompressedStream.java:354) 
    at org.spark_project.jetty.servlets.gzip.AbstractCompressedStream.write(AbstractCompressedStream.java:229) 
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) 
    at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282) 
    at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) 
    at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135) 
    at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220) 
    at java.io.PrintWriter.write(PrintWriter.java:456) 
    at java.io.PrintWriter.write(PrintWriter.java:473) 
    at java.io.PrintWriter.print(PrintWriter.java:603) 
    at org.apache.spark.ui.JettyUtils$$anon$2.doGet(JettyUtils.scala:86) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.spark_project.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 
    at org.spark_project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 
    at org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.doFilter(AmIpFilter.java:164) 
    at org.spark_project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.spark_project.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.spark_project.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.spark_project.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.spark_project.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.spark_project.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.spark_project.jetty.servlets.gzip.GzipHandler.handle(GzipHandler.java:479) 
    at org.spark_project.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) 
    at org.spark_project.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.spark_project.jetty.server.Server.handle(Server.java:499) 
    at org.spark_project.jetty.server.HttpChannel.handle(HttpChannel.java:311) 
    at org.spark_project.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.spark_project.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
    at org.spark_project.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 
    at org.spark_project.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 
    at java.lang.Thread.run(Thread.java:744) 
2017-02-23 21:01:48,024 WARN org.spark_project.jetty.server.HttpChannel (HttpChannel.java:handle(384)) - /jobs/ 
+0

キャッシュをクリアしてみますか? – Hng

+0

Hmm。私はそれを試みることができます。ただし、YARNからキャッシュメモリ内の利用可能なデータフレームをすべて消去するにはどうすればよいですか。私はdf.unpersist()によって特定のdatフレームをきれいにすることができることを知っています。しかし、キャッシュされたすべてのオブジェクトが何であるかを知りたい場合は、YARNクラスターからすべてのアイデアを一度に一掃できますか? – Baktaawar

+0

@Hngさて、私はこれをしました: SqlContext.clearCache()。したがって、キャッシュされた変数はすべて消去されます。しかし、それはまだ動作していないようでした。 このエラーでGoogleを検索すると、ライブラリの2つのバージョンが同じではない(問題が発生しているなど)場合、問題が発生することがわかりました。シャーディングは方法です。しかし、私の質問は、それがライブラリのバージョンの問題であれば、いくつかのサンプルデータに対してどうやって動作するのでしょうか? – Baktaawar

答えて

0

、私は火花-submitコマンドでいくつかのjarファイルを追加することで、この問題を解決しました。

- jars /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/lib/spark-examples-1.6.0-cdh5.9.0-hadoop2。 6.0-cdh5.9.0.jar

+0

私はjupyterを使用する..任意のアイデアをそこに追加する方法? – Baktaawar

+0

インポートos os.environ ['PYSPARK_SUBMIT_ARGS'] = ' - jars /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/lib/spark-examples- 1.6.0-cdh5.9.0-hadoop2.6.0-cdh5.9.0.ja pyspark-shell ' –

+0

got ファイル ""、行1 インポートos os.environ [' PYSPARK_SUBMIT_ARGS '] =' - jars /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/lib/spark-examples-1.6.0-cdh5.9.0-hadoop2です。 6.0-cdh5.9.0.ja pyspark-shell ' - ^ SyntaxError:無効な構文 – Baktaawar

関連する問題