2017-11-30 1 views
1

안녕하세요, Spark DataFrame df1은 약 1000 열 모두 String 유형 열입니다. 이제 df1의 열 유형을 문자열에서 열 이름의 조건에 따라 double, int 등의 다른 유형으로 변환하려고합니다. 예 : 의는 DF1은 COL 이름이 용어 1 다음 int로 변경 포함하고 COL 이름이 용어 2가 포함되어있는 경우 다음 등등 두 배로하고 변경하는 경우 열 유형이 변경 문자열 유형Spark DataFrame은 열의 조건에 따라 데이터 유형을 바꿉니다.

df1.printSchema 

col1_term1: String 
col2_term2: String 
col3_term3: String 

상태의 세 개의 열이 가정하자. 제발 내가 스파크를 처음 사용하는 것을 안내해주세요. 미리 감사드립니다.

답변

4

당신은 단순히 열을 통해지도하고 열 이름에 따라 적절한 데이터 형식으로 열을 캐스팅 할 수 있습니다

import org.apache.spark.sql.types._ 

val df = Seq(("1", "2", "3"), ("2", "3", "4")).toDF("col1_term1", "col2_term2", "col3_term3") 

val cols = df.columns.map(x => { 
    if (x.contains("term1")) col(x).cast(IntegerType) 
    else if (x.contains("term2")) col(x).cast(DoubleType) 
    else col(x) 
}) 

df.select(cols: _*).printSchema 
root 
|-- col1_term1: integer (nullable = true) 
|-- col2_term2: double (nullable = true) 
|-- col3_term3: string (nullable = true) 
+0

안녕 @Psidom 나는 유형을 변경 보인다 접근 방식을 시도했지만이 이름을 변경뿐만 아니라 I printSchema 같은 cast (col1_term1 정수) : 정수 (nullable = true) – u449355

+0

어떤 스파크 버전을 사용하고 계십니까? 나는 불꽃 2+ 안에 행동을 얻지 않았다. 'alias' 시도해보십시오. 'col (x) .cast (IntegerType) .alias (x)'예를 들어. – Psidom

관련 문제