在spark中加入两个数据帧时,得到空的结果

时间:2016-04-03 04:59:23

标签: apache-spark cassandra apache-spark-sql datastax

我正在尝试join两个dataframes来自数据库Cassandra的火花。

val table1=cc.sql("select * from test123").as("table1")

val table2=cc.sql("select * from test1234").as("table2")

table1.join(table2, table1("table1.id") === table2("table2.id1"), "inner")
  .select("table1.name", "table2.name1")

我得到的结果是empty

2 个答案:

答案 0 :(得分:0)

如果您不确定此处的join语法,可以尝试纯SQL方式。

table1.registerTempTable("tbl1")
table2.registerTempTable("tbl2")

val table3 = sqlContext.sql("Select tbl1.name, tbl2.name FROM tbl1 INNER JOIN tbl2 on tbl1.id=tbl2.id")

此外,你应该看到,如果table1和table2,首先确实有相同的id来进行连接。

更新: -

import org.apache.spark.sql.SQLContext
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

理想情况下,是的,csc也应该有效。 你应该参考http://spark.apache.org/docs/latest/sql-programming-guide.html

答案 1 :(得分:0)

首先将数据帧和之后的数据帧合并为临时表