2017-06-01 60 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