Why is join not possible after show operator?

前端 未结 2 1445
别跟我提以往
别跟我提以往 2020-12-02 02:52

The following code works fine until I add show after agg. Why is show not possible?

 val tempTableB = tableB.groupBy(\         


        
相关标签:
2条回答
  • 2020-12-02 03:23

    .show() is a function with, what we call in Scala, a side-effect. It prints to stdout and returns Unit(), just like println

    Example:

    val a  = Array(1,2,3).foreach(println)
    a: Unit = ()
    

    In scala, you can assume that everything is a function and will return something. In your case, Unit() is being returned and that's what's getting stored in tempTableB.

    0 讨论(0)
  • 2020-12-02 03:24

    As @philantrovert has already answered with much detailed explanation. So I shall not explain.

    What you can do if you want to see whats in tempTableB then you can do so after it has been assigned as below.

     val tempTableB = tableB.groupBy("idB")
      .agg(first("numB").as("numB")) 
    
     tempTableB.show
    
     tableA.join(tempTableB, $"idA" === $"idB", "inner")
     .drop("idA", "numA").show
    

    It should work then

    0 讨论(0)
提交回复
热议问题