1
私はいくつかの列見出しとそれに対応する値がnullである1つのCSVを持っています。 null
という名前の列を削除するにはどうすればいいですか?Spark Data Frameから複数の列を削除する方法はありますか?
"name"|"age"|"city"|"null"|"null"|"null"
"abcd"|"21" |"7yhj"|"null"|"null"|"null"
"qazx"|"31" |"iuhy"|"null"|"null"|"null"
"foob"|"51" |"barx"|"null"|"null"|"null"
私はヘッダを持つすべての列を削除したい以下のようになりますnull
ように、出力データ・フレームがあります:
"name"|"age"|"city"
"abcd"|"21" |"7yhj"
"qazx"|"31" |"iuhy"
"foob"|"51" |"barx"
IスパークこのCSVを読み込む次のように サンプルCSVであります以下に示すように、スパークはヌル列に番号を付加:
"name"|"age"|"city"|"null4"|"null5"|"null6"
"abcd"|"21" |"7yhj"|"null"|"null"|"null"
"qazx"|"31" |"iuhy"|"null"|"null"|"null"
"foob"|"51" |"barx"|"null"|"null"|"null"
ソリューションが見つかりました
お返事ありがとうございました@MaxU。私の最終的な解決策がある:あなたがこのようにそれを行うことができます
val filePath = "C:\\Users\\shekhar\\spark-trials\\null_column_header_test.csv"
val df = spark.read.format("csv")
.option("inferSchema", "false")
.option("header", "true")
.option("delimiter", "|")
.load(filePath)
val q = df.columns.filterNot(c => c.startsWith("null")).map(a => df(a))
// df.columns.filterNot(c => c.startsWith("null")) this part removes column names which start with null and returns array of string. each element of array represents column name
// .map(a => df(a)) converts elements of array into object of type Column
df.select(q:_*).show
あなたが1つのブラケットが欠落しているので、それを閉じるのを忘れています。 – BlueTomato
@BlueTomato、良いキャッチ - ありがとう!今修正されました – MaxU