2017-06-01 82 views
0

我們將Hive表中的客戶數據和另一個Hive表中的銷售數據包含在TB中的數據中。我們正在嘗試爲多個客戶提供銷售數據並將其保存到文件中。將多個數據插入同一個數據框中

我們到目前爲止已經試過:

我們厭倦了左外客戶和銷售表之間的連接,但由於龐大的銷售數據,它不工作。

val data = customer.join(sales,"customer.id" = "sales.customerID",leftouter) 

所以另一種方法是提取數據的形式銷售表根據客戶的特定區域列表,看看這個區域的數據有客戶資料,如果其他數據幀保存它存在的數據並加載數據到同所有區域的數據框。

我的問題在於,是否在spark中支持數據幀的多個插入數據。

回答

0

如果銷售數據框大於客戶數據框,那麼您可以簡單地在連接操作中切換數據框的順序。

val data = sales.join(customer,"customer.id" = "sales.customerID", leftouter) 

你也可以添加一個提示爲Spark播放小數據幀,但我相信它需要大於2GB更小:

import org.apache.spark.sql.functions.broadcast 
val data = sales.join(broadcast(customer),"customer.id" = "sales.customerID", leftouter) 

要使用其他的方法和iterativly合併dataframes也可能。爲此,您可以使用union方法(Spark 2.0+)或unionAll(舊版本)。這個方法會將數據幀附加到另一個數據幀。在你要與對方合併dataframes列表的情況下,你可以用reduce一起使用union

val dataframes = Seq(df1, df2, df3) 
dataframes.reduce(_ union _) 
+0

OK,你可以在多個插入註釋到數據幀 – venkata

+0

@venkata見我的編輯,我認爲它應該回答你的問題。 – Shaido

相關問題