在 Spark 中联接多个数据帧



我正在实现一个项目,其中MySql数据使用sqoop导入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 中进行查询的更好方法

我遇到了类似的问题,最终使用了:

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 来完成相同的工作

相关内容

  • 没有找到相关文章

最新更新