2017-07-25 72 views
1

我试图运行一个查询,查询Oracle数据库与加入使用sqlcontext一样,执行SQL JOIN使用sqlcontext火花

val sql="select a from b,c where b.join=c.join" 
val dataframe = sqlcontext.read.jdbc(url,sql,connection_properties) 

我得到无效的表名错误。 但是,如果我尝试像下面查询表,它工作正常。

val df1 = sqlcontext.read.jdbc(url,"b",connection_properties) 
val df2 = sqlcontext.read.jdbc(url,"c",connection_properties) 

将它不可能运行加入使用sqlcontext查询。

回答

2

这是你需要做的,创建从表,有两个dataframes如下

val df1 = sqlcontext.read.jdbc(url,"b",connection_properties) 
val df2 = sqlcontext.read.jdbc(url,"c",connection_properties) 

和连接两个dataframes你想加入

df1.join(df2, <join condition>, <which join>) 

//example 
df1.join(df2, df1($"id") === df2($"id"), "left") 

的关键是什么,我认为这是一个更好的选择,据我所知

希望这有助于!