hadoop - 使用 sqlcontext spark 执行 sql join

标签 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)

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

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

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

最佳答案

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

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

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

希望这对您有所帮助!

关于hadoop - 使用 sqlcontext spark 执行 sql join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307721/

相关文章:

hadoop - 如何通过 (b,a) 过滤 (a,b) 关系?

python - PySpark 在 RDD 上运行多个函数

hadoop - 配置单元:从程序中插入数据但不插入数据文件?

python - 过滤窗隔板至少有 3 个 5 分钟间隙

apache-spark - ML 中逻辑回归的优化例程 (Spark 1.6.2)

java - 具有两个值的键的最佳实践

hadoop - MapReduce Reducer 的 KeyOut 类型

hadoop - 为什么hadoop总是在寻找java-6-sun

apache-spark - Spark 行编码器 : empty metadata

apache-spark - 如何在DataFrame中使用具体时间戳填充无值?