にそうここに私が何をしようとしているいくつかのサンプルコードですありません:、私は文の特徴ベクトルを)(groupByKey後DenseVectorsを合計Pysparkシェルで動作しますが、火花提出
まず構築しています使用Word2Vec:
from pyspark.ml.feature import Word2Vec
# Input data: Each row is a bag of words from a sentence or document.
documentDF = sqlContext.createDataFrame([
("Hi I heard about Spark".split(" "),),
("I wish Java could use case classes".split(" "),),
("Logistic regression models are neat".split(" "),)
], ["text"])
# Learn a mapping from words to Vectors.
word2Vec = Word2Vec(vectorSize=3, minCount=0, inputCol="text", outputCol="result")
model = word2Vec.fit(documentDF)
result = model.transform(documentDF)
Converting output result to an RDD:
result_rdd=result.select("result").rdd
rdd_with_sample_ids_attached = result_rdd.map(lambda x: (1, x[0]))
rdd_with_sample_ids_attached.collect()
出力: [(1、DenseVector([0.0472、-0.0078、0.0377]))、(1、DenseVector([ - 0.0253、-0.0171、0.0664]) )、(1、DenseVector([0.0101,0.0324,0.0158]))]
は今、私はgroupByKeyを(DO)と、以下のように各グループにDenseVectorsの和を見つける:
rdd_sum = rdd_with_sample_ids_attached.groupByKey().map(lambda x: (x[0], sum(x[1])))
rdd_sum.collect()
出力: [(1、DenseVector([0.0319、示されているように、このコードはpysparkシェルで完全に動作します。私は、単一のパーティション、同じエラーにRDDを再分割しようとしている
File "/mnt1/yarn/usercache/hadoop/appcache/application_1465567204576_0170/container_1465567204576_0170_01_000002/pyspark.zip/pyspark/sql/functions.py", line 39, in _
jc = getattr(sc._jvm.functions, name)(col._jc if isinstance(col, Column) else col)
AttributeError: 'NoneType' object has no attribute '_jvm'
:私は同じコードを提出するときしかし、火花提出し、私は次のエラーを取得します。 助けてください。
このエラーは、 'sc'が' NoneType'であることを示唆しています。たぶん大規模なデータセットを扱っていて、クラスタが死んでいるかもしれませんか?これは非常に可能です。 'groupByKey'を使用しています。これは、キーとその値を保持するのに十分な大きさのメモリが必要です。 – ShuaiYuan
また、 'groupByKey'の後のラムダ関数は、合計を与えません。 – ShuaiYuan
Hey!いいえ、上記のサンプルデータセットを試しました。同じエラー。 pysparkシェルで動作しますが、同じコードを.pyファイルでspark-submitすると動作しません。また、ラムダ関数は和を計算します - それは質問のタイプミスです。私は質問で自分のコードを編集しました。 グループ化されたIDに関連付けられているDenseVectorsのリストを展開できますし、len()操作も実行できます。失敗するsum()だけです。恥ずかしくて、それはpysparkシェルとipythonノートブックで動作するので、私はここで何か不足していると感じています。 –