使用 sqlcontext spark 执行 sql join [重复]

Posted

技术标签:

【中文标题】使用 sqlcontext spark 执行 sql join [重复]【英文标题】:Perform sql join using sqlcontext spark [duplicate] 【发布时间】:2017-07-25 15:31:31 【问题描述】:

我尝试运行查询以使用 sqlcontext 之类的连接查询 Oracle db,

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 运行连接查询。

【问题讨论】:

【参考方案1】:

这是你需要做的,从下面的表中创建两个数据框

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")

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

希望这会有所帮助!

【讨论】:

以上是关于使用 sqlcontext spark 执行 sql join [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spark:通过对临时表执行 sql 查询来创建临时表

无法使用 spark(sqlContext) 在 aws redshift 中写入 csv 数据

NoSuchMethodError:org.apache.spark.sql.SQLContext.applySchema

在 spark 2.1 中访问共享的 SqlContext

Spark2 中的 SQLContext 没有获取更新的配置单元表记录

sqlContext.read...load() 和 sqlContext.write...save() 代码在 Spark 集群上运行在哪里?