使用sqlcontext spark执行sql join

时间:2017-07-25 15:31:32

标签: hadoop apache-spark

我尝试使用sqlcontext(

)运行查询以查询带有连接的Oracle数据库
val sql="select a from b,c where b.join=c.join"
val dataframe = sqlcontext.read.jdbc(url,sql,connection_properties)

我收到无效的tablename错误。 但是,如果我尝试查询下面的表格,它可以正常工作。

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

是否无法使用sqlcontext运行连接查询。

1 个答案:

答案 0 :(得分:2)

这是您需要做的,从表中创建两个数据帧,如下所示

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

并使用您要加入的密钥加入两个数据框

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

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

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

希望这有帮助!