【问题标题】:While joining two dataframe in spark, getting empty result在火花中加入两个数据框时,结果为空
【发布时间】:2016-07-22 18:18:11
【问题描述】:

我正在尝试从数据库 Cassandra 中的 spark 中的 join 两个 dataframes

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

【问题讨论】:

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


    【解决方案1】:

    如果你不确定这里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

    【讨论】:

    • <console>:34: error: not found: value sqlContext val table3 = sqlContext.sql("Select tbl1.name, tbl2.name FROM tbl1 INNER JOIN tbl2 on tbl1.id=tbl2.id") 我已经使用 cassandra 上下文 (cc) 创建了数据框 table1 和 table2。它可以与 sqlContext 一起使用吗?
    • 更新了答案
    【解决方案2】:

    首先合并两个数据框,然后注册为临时表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 2018-09-30
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多