scala – 如何在Spark SQL中指定多个表?
发布时间:2020-12-16 18:17:30 所属栏目:安全 来源:网络整理
导读:我有一个代码,我需要设置三个表.为此,我需要为每个表调用jdbc函数三次.见下面的代码 val props = new Properties props.setProperty("user","root") props.setProperty("password","pass")val df0 = sqlContext.read.jdbc( "jdbc:mysql://127.0.0.1:3306/Fir
我有一个代码,我需要设置三个表.为此,我需要为每个表调用jdbc函数三次.见下面的代码
val props = new Properties props.setProperty("user","root") props.setProperty("password","pass") val df0 = sqlContext.read.jdbc( "jdbc:mysql://127.0.0.1:3306/Firm42","company",props) val df1 = sqlContext.read.jdbc( "jdbc:mysql://127.0.0.1:3306/Firm42","employee",props) val df2 = sqlContext.read.jdbc( "jdbc:mysql://127.0.0.1:3306/Firm42","company_employee",props) df0.registerTempTable("company") df1.registerTempTable("employee") df2.registerTempTable("company_employee") val rdf = sqlContext.sql( """some_sql_query_with_joins_of_various_tables""".stripMargin) rdf.show 是否可以简化我的代码?或者也许有一些方法可以在SQL配置中的某处指定多个表. 解决方法
DRY:
val url = "jdbc:mysql://127.0.0.1:3306/Firm42" val tables = List("company","company_employee") val dfs = for { table <- tables } yield (table,sqlContext.read.jdbc(url,table,props)) for { (name,df) <- dfs } df.registerTempTable(name) 不需要数据框架?跳过第一个循环: for { table <- tables } sqlContext.read.jdbc(url,props).registerTempTable(table) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |