以下のロジックの入力見出しファイルからInteger列をフィルタリングし、このロジックを変更して、入力列のいずれかがカウントされているかどうかを確認する検証を追加しようとしています入力見出しファイルのrddカウントと同じです。私はそのような列を除外したいと思うでしょう。入力ファイルrddに等しい数のフィルタ列Spark
更新
入力ファイル内の列と名前の数は静的ではありません、それは我々がファイルを取得するたびに変更されます。 目的は、カウントが入力ファイルのrddカウントと等しい列を除外することです。整数列のフィルタリングは、以下のロジックで既に達成されています。
e.g input parquet file count = 100
count of values in column A in the input file = 100
このような列を除外します。
現在のロジック
//Get array of structfields
val columns = df.schema.fields.filter(x =>
x.dataType.typeName.contains("integer"))
//Get the column names
val z = df.select(columns.map(x => col(x.name)): _*)
//Get array of string
val m = z.columns
新しいロジックは、カラムは、カウントが等しいたので、私は、新しい条件に明示的に列名を渡したくない
val cnt = spark.read.parquet("inputfile").count()
val d = z.column.where column count is not equals cnt
ようになります入力ファイルは変更されます(上記のval d = ..) これについてのロジックはどのように記述しますか?
すべての整数の列を同じになります。したがって、カウントが入力パーケットファイルの行数と一致すると、データフレームに行が存在しないでしょうか?それはあなたが欲しいものですか? –
これを見てくれてありがとうRamesh。すべての整数列には同じカウントがありませんが、approx_count_distinctを指定すると、各列のカウントは異なる値に基づいて異なります。ここでは、入力の寄せ木ファイル数(私の場合は100)フィルタリングする必要があります。 – sabby
あなたは私が推測する関数selectとwhereを使うことができます:) –