2017-03-01 3 views
2

存在しない場合、私はさまざまなJSONファイルにJSONデータを持っているとキーが例えばpysparkのデータフレームは、私が列「B」上のデータをaggreagateしたいことが

{"a":1 , "b":"abc", "c":"abc2", "d":"abc3"} 
{"a":1 , "b":"abc2", "d":"abc"} 
{"a":1 ,"b":"abc", "c":"abc2", "d":"abc3"} 

のために、ラインに異なる可能性がある列を追加します、 'c'、 'd'、 'f'は、指定されたjsonファイルには存在しませんが、他のファイルに存在する可能性があります。列 'f'が存在しないので、その列に対して空の文字列を取ることができます。

私はこれは私が

{"a":2 , "b":"abc", "c":"abc2", "d":"abc3","f":"" } 
{"a":1 , "b":"abc2", "c":"" ,"d":"abc","f":""} 

たい最終的な出力である入力ファイルを読み取り、この

import pyspark.sql.functions as f 
df = spark.read.json(inputfile) 
df2 =df.groupby("b","c","d","f").agg(f.sum(df["a"])) 

のようなデータを集約しています誰が助けてくださいことはできますか?前もって感謝します!

答えて

3

あなたはcolumは、データフレームで利用可能かどうかを確認し、必要な場合にのみdfを変更することができます。

if not 'f' in df.columns: 
    df = df.withColumn('f', f.lit('')) 
+0

はそれはとても簡単です、ありがとうございます。ドキュメントをもう一度見直す必要があると思います。 – gashu

+0

@マリウス私は2つのデータフレームを持っています。私はそのスキーマを比較し、1つのデータフレームには3つの列がありません。私はリストとしてこれを持っています。 これらの列が欠落しているデータフレームにこれらの列を追加します。値がnullの場合。どのようにしてそれをシングルショットで行うことができますか? – User12345

+0

@Virureddyはそれぞれの欠落した列に対して 'df = df.withColumn(col_name、lit(None).cast(col_datatype))'を実行します。 – Mariusz

関連する問題