背景
需要查询一张表,表来源根据管理表(tablename)的条件筛选
表 tablename 存放其他表名 ,现在需要根据表中tb_name的值查询对应表的值
实现代码
import java.util.Properties
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.{DataFrame, SparkSession}
object df {
def main(args: Array[String]): Unit = {
Logger.getLogger("org").setLevel(Level.ERROR)
//创建SparkSession对象
val spark = SparkSession.builder()
.appName("spark_sql")
.master("local[2]")
.getOrCreate()
import spark.implicits._
val reader: DataFrame = spark.read
.format("jdbc")
.option("url", "jdbc:mysql://**********:3306/database")
.option("user", "********")
.option("password", "********")
.option("dbtable", "tbname")
.load()
val url = "jdbc:mysql://**********:3306/database"
val connectionProperties = new Properties()
connectionProperties.put("user", "********")
connectionProperties.put("password", "********")
val list: Seq[String] = reader.select('*)
.rdd
.collect()
.toList
.map(row => row.mkString)
// list.foreach(println)
for (elem <- list) {
spark.read
.jdbc(url, elem, connectionProperties)
.select('*)
.show()
}
}
}
结果