복붙노트

[SCALA] 왜 쇼 운영자 후 불가능 가입?

SCALA

왜 쇼 운영자 후 불가능 가입?

내가 AGG 후 공연을 추가 할 때까지 다음 코드는 잘 작동합니다. 왜 표시 할 수 없습니다?

 val tempTableB = tableB.groupBy("idB")
  .agg(first("numB").as("numB")) //when I add a .show here, it doesn't work

 tableA.join(tempTableB, $"idA" === $"idB", "inner")
 .drop("idA", "numA").show

이 오류는 말합니다 :

error: overloaded method value join with alternatives:
  (right: org.apache.spark.sql.Dataset[_],joinExprs: org.apache.spark.sql.Column,joinType: String)org.apache.spark.sql.DataFrame <and>
  (right: org.apache.spark.sql.Dataset[_],usingColumns: Seq[String],joinType: String)org.apache.spark.sql.DataFrame
 cannot be applied to (Unit, org.apache.spark.sql.Column, String)
              tableA.join(tempTableB, $"idA" === $"idB", "inner")
                     ^

왜 이런 식으로 행동한다?

해결법

  1. ==============================

    1..show () 우리 스칼라 부작용으로 부르는와 함수이다. 그것은 단지에 println처럼, stdout에 출력하고 단위 ()를 반환

    .show () 우리 스칼라 부작용으로 부르는와 함수이다. 그것은 단지에 println처럼, stdout에 출력하고 단위 ()를 반환

    예:

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

    스칼라에서는 모든 함수이며 뭔가를 반환한다고 가정 할 수있다. 귀하의 경우, 단위는 () 반환되는 tempTableB에 저장하기 무슨이의.

  2. ==============================

    2.@philantrovert 이미 많은 상세한 설명과 함께 대답했다한다. 그래서 나는 설명하지 않는다.

    @philantrovert 이미 많은 상세한 설명과 함께 대답했다한다. 그래서 나는 설명하지 않는다.

    당신이 그것을 아래로 할당 한 후 tempTableB에서 무슨 일이 당신이 그렇게 할 수 있습니다보고 싶은 경우에 당신이 할 수 있습니다.

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

    그런 다음 작업을해야

  3. from https://stackoverflow.com/questions/45322005/why-is-join-not-possible-after-show-operator by cc-by-sa and MIT license