-1
私は20TBのデータを持っています。私は(Solution used found here)以下のように行列を刺激するために、スパークデータフレームを変換しようとした: 私のデータフレームは、次のようになります。スパーク - パンダを使わずにデータフレームまたはrddをスパーク行列またはnumpy配列に変換する方法
+-------+---------------+--------------------+
|goodsID|customer_group|customer_phone_number|
+-------+---------------+--------------------+
| 123| XXXXX| XXXXXXXX|
| 432| YYYYY| XXXXXXXX|
+-------+---------------+--------------------+
from pyspark.mllib.linalg.distributed import IndexedRow, IndexedRowMatrix
mat = IndexedRowMatrix(mydataframe.map(lambda row: IndexedRow(*row)))
mat.numRows()
mat.numCols()
が、それは誤り以下の私を与える:
Caused by: org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/home/test/spark-1.6.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/worker.py", line 111, in main
process()
File "/home/test/spark-1.6.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/worker.py", line 106, in process
serializer.dump_stream(func(split_index, iterator), outfile)
File "/home/test/spark-1.6.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/serializers.py", line 263, in dump_stream
vs = list(itertools.islice(iterator, batch))
File "/home/test/spark-1.6.0-bin-hadoop2.6/python/pyspark/rdd.py", line 1293, in takeUpToNumLeft
yield next(iterator)
File "<stdin>", line 1, in <lambda>
TypeError: __init__() takes exactly 3 arguments (4 given)
だから私の質問は
です- スパークでこれをどのように達成できますか?
- また、データフレームをnumpy配列に変換するにはどうすればよいですか?
- スパークのパンダを使用しているのは本当に悪いですか?
、また影響があるため、これらのネストされたループであるだろうどのくらいのパフォーマンス行列計算の多くが起こっているその内側のループ(5レベル)、のためのネストされたのがたくさんありますまた、20日掛かるデータセット全体を処理するためのパフォーマンスを向上させるために、foreach、map、またはflatmapを使用してコードを書き直す必要があります。 –