0

用ませ計画を投げていない、私はそれにパイプラインを適用しようとしていますが、私はエラーの下に取得しています:PySparkのデータフレームのパイプラインがpysparkのデータフレームを前処理した後MetastoreRelationエラー

java.lang.AssertionError: assertion failed: No plan for MetastoreRelation.

これの意味とどのように解決するためにはどのようなものですこの。 私のコードはかなり大きくなっているので、私はステップ1を説明します。私はスパークデータフレームに8000列と68k行を持っています。 8kカラムのうち500個は、pyspark.mlを1つのホットエンコーディングをml.pipelineのステージとして適用したカテゴリです。encoders2 = [OneHotEncoder(inputCol=c, outputCol="{0}_enc".format(c)) for c in cat_numeric[i:i+2]]
これは非常に遅く、3時間後でも完全ではありませんでした。私は12ノードのそれぞれで40GBのメモリを使用しています! 2. pysparkデータフレームから100列を読み込み、そこからpandasデータフレームを作成し、1つのホットエンコーディングを行います。次に、pandas daaframeをpysparkデータに変換し、元のデータフレームとマージします。 3.次に、文字列インデクサーとOHEの段階でパイプラインを適用して、5つのカテゴリ文字列フィーチャーに適用してから、「フィーチャー」と「ラベル」を作成します。しかし、この段階で私は上記のエラーが発生します。 4.私のアプローチが間違っているか、何か不足している場合は教えてください。さらに詳しい情報が必要な場合はお知らせください。ありがとう

+0

rootcauseが正確に何であるかを知ることは難しく、正しく理解するためのコードスニペットがあるかもしれません。サンプルコードを追加してください。 –

+0

この詳細を編集オプションで質問に追加してください。 –

+0

@sys私のpysparkデータフレームでdf.count()を実行してもこのエラーが出ます。 – Ajg

答えて

1

このエラーは、2つのpysparkデータフレームを結合する順序が原因でした。 私は、結合の順序をa.join(b)からb.join(a)とその働きに変更しようとしました。

関連する問題