密なベクトルを取り、個々の列に分割する関数を実行しようとしています。PySpark DenseVectorを大きなデータセットの個々の列に分割する
dfには、列として 'ID'と 'feature'が含まれています。以下のコードは、フォームに変換します:IDを、ときに私_2、_3、_4 ... _2、_3「機能」を分割する時に作成されます列の列ベクトル
def extract(row):
return (row.ID,) + tuple(float(x) for x in row.feature.values)
df = df.rdd.map(extract).toDF(["ID"])
あるこのコードが失敗した場所ほぼ100万のIDを持つdf全体で実行します。
しかし、100行のサンプルを取得して同じコードを実行すると、完全に機能します。私が理解する限り、これは記憶上の問題です。より大きなデータセットでこれを行う効率的な方法は何でしょうか?どんな助けもありがとう。エラーメッセージ: Spark Error Snapshot
最新の編集:DFが作成される前に何のヌルを持っていないDFので、データクリーニングおよび前処理、たまたま私が2.0+
編集スパークを使用しています。
追加情報:このリンクHow to explode columns?には私の質問に対するスカラーベースの回答があります。これはpysparkで実装できますか?
あなたのエラー情報によると、私は@Chobeatの判断が正しいと思います。たぶんあなたのデータを最初にチェックし、データクリーニングのいくつかの操作を行う必要があります。それに対する更新はありますか? –
私が欲しいものを達成する良い方法はありますか?基本的に、 'n'値を持つベクトルをn個の列に分割する必要があります。 –