2017-08-07 12 views
1

大きなデータフレームについて話しているときに、データフレームの集合を作成する方法はいくつかあります(もしあれば)。空のデータフレームを最初に作成するか、最初に作成したデータフレームと連続して結合する必要がありますか?PythonでSpark SQLデータフレームを結合する方法

空のデータフレームの作成

from pyspark.sql.types import StructType, StructField, IntegerType, StringType 

schema = StructType([ 
    StructField("A", StringType(), False), 
    StructField("B", StringType(), False), 
    StructField("C", StringType(), False) 
]) 

pred_union_df = spark_context.parallelize([]).toDF(schema) 

方法1 - 連合あなたが行くように:

for ind in indications: 
    fitted_model = get_fitted_model(pipeline, train_balanced_df, ind) 
    pred = get_predictions(fitted_model, pred_output_df, ind) 
    pred_union_df = pred_union_df.union(pred[['A', 'B', 'C']]) 

方法2 - 連合終わり:

all_pred = [] 
for ind in indications: 
    fitted_model = get_fitted_model(pipeline, train_balanced_df, ind) 
    pred = get_predictions(fitted_model, pred_output_df, ind) 
    all_pred.append(pred) 
pred_union_df = pred_union_df.union(all_pred) 

それとも間違っているのですか?

編集: 方法2はこのanswerからであると思っていたため、これは不可能でした。リストをループして各データフレームを結合する必要がありました。

答えて

0

方法2は、長い系譜の問題を避けるため、常に優先されます。

DataFrame.unionは、1つのDataFrameを引数として取りますが、RDD.uniontake a listです。あなたのサンプルコードが与えられたら、toDFを呼び出す前にそれらの結合を試みることができます。あなたのデータがディスク上にある場合は

、あなたはまた、例えば労働組合を達成するためにload them all at onceに試みることができる

dataframe = spark.read.csv([path1, path2, path3])

関連する問題