我正在实现一个项目,其中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)
是否有其他可以根据条件有效地连接所有数据框..
- 这是将表转换为数据框并在其上进行查询的正确方法,还是处理此类联接并在 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 来完成相同的工作