복붙노트

[SCALA] 스칼라 스파크 DataFrame : dataFrame.select 여러 열은 열 이름의 순서를 부여

SCALA

스칼라 스파크 DataFrame : dataFrame.select 여러 열은 열 이름의 순서를 부여

val columnName=Seq("col1","col2",....."coln");

지정된 dataframe 포함에만 열 이름을 얻을 수 dataframe.select 작업을 할 수있는 방법이 있나요. 나는 dataframe.select 할 수있어 ( "COL1", "COL2을"...) 하지만 columnNameis는 실행시에 생성. 나는 그것이 어떤 성능 오버 헤드를 가지고 loop.Will의 각 열에 이름을 반복적으로) dataframe.select을 (할 수있는? 이러한 목표를 달성하기 위해 다른 간단한 방법이 있나요?

해결법

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

    1.

    val columnNames = Seq("col1","col2",....."coln")
    
    // using the string column names:
    val result = dataframe.select(columnNames.head, columnNames.tail: _*)
    
    // or, equivalently, using Column objects:
    val result = dataframe.select(columnNames.map(c => col(c)): _*)
    
  2. ==============================

    2.dataFrame.select ()가 컬럼의 순서를 기대하고 우리가 문자열의 순서를 가지고 있기 때문에, 우리는 COLS의 목록에 우리의 순서를 변환하고 순서에 그 목록을 변환해야합니다. columnName.map (NAME => COL (이름))) (* _ 문자열의 시퀀스의 열 순서를 부여하며,이 선택 파라미터로서 전달 될 수있다 :

    dataFrame.select ()가 컬럼의 순서를 기대하고 우리가 문자열의 순서를 가지고 있기 때문에, 우리는 COLS의 목록에 우리의 순서를 변환하고 순서에 그 목록을 변환해야합니다. columnName.map (NAME => COL (이름))) (* _ 문자열의 시퀀스의 열 순서를 부여하며,이 선택 파라미터로서 전달 될 수있다 :

      val columnName = Seq("col1", "col2")
      val DFFiltered = DF.select(columnName.map(name => col(name)): _*)
    
  3. from https://stackoverflow.com/questions/36131716/scala-spark-dataframe-dataframe-select-multiple-columns-given-a-sequence-of-co by cc-by-sa and MIT license