在Spark中加入多个数据框架

时间:2017-01-23 17:55:24

标签: scala apache-spark apache-spark-sql

我正在实现一个项目,其中使用sqoop将MySql数据导入hdfs。它有近30个表。我通过推断模式并将其注册为临时表来读取每个表作为数据帧。我这样做的问题很少...... 1.假设df1到df10,需要为表格实现几个连接。在MySQL中,查询将是 select a.id,b.name,c.AccountName from accounts a priority b bills c where a.id=b.id and c.name=a.name 而不是使用 sqlContext.sql(select a.id,b.name,c.AccountName from accounts a priority b bills c where a.id=b.id and c.name=a.name) 还有其他根据条件有效地加入所有数据帧。

  1. 这是将表格转换为数据框架并在其上查询的正确方法,还是以更好的方式来处理此类连接并在spark中查询

1 个答案:

答案 0 :(得分:0)

我有类似的问题,最后使用:

val df_list = ListBuffer[DataFrame]() df_list .toList.reduce((a, b) => a.join(b, a.col(a.schema.head.name) === b.col(b.schema.head.name), "left_outer"))

你可以在Sqoop上创建一个免费的sql语句并加入那里的一切。或使用Spark JDBC执行相同的工作