-
[Spark] 컬럼명 대소문자 구분 (case-sensitive) 옵션Open Source/Spark 2020. 10. 14. 16:24반응형
spark version: 2.4.4
spark 은 기본 설정으로 컬럼명의 대소문자를 구분하지 않고 선택을 할 수 있다.
옵션의 이름은 spark.sql.caseSensitive 로 기본 값은 False 이다.
이 때는 아래의 코드와 같이 컬럼명이 대소문자만 다른 문자열로 되어 있는 경우, 하나의 컬럼만 특정하여 선택이 불가능하다.
df = spark.createDataFrame([{'ABC': 1, 'abc': 2}]) df.show() ''' output: +---+---+ |ABC|abc| +---+---+ | 1| 2| +---+---+ ''' df.select('ABC').show() ''' output: Traceback (most recent call last): ... pyspark.sql.utils.AnalysisException: "Reference 'ABC' is ambiguous, could be: ABC, ABC.;" '''
대소문자를 구분하여 각각의 컬럼을 선택하고자 할때는 해당 옵션을 True 로 설정 해야 한다.
df = spark.createDataFrame([{'ABC': 1, 'abc': 2}]) df.show() ''' output: +---+---+ |ABC|abc| +---+---+ | 1| 2| +---+---+ ''' spark.conf.set('spark.sql.caseSensitive', True) df.select('ABC').show() ''' output: +---+ |ABC| +---+ | 1| +---+ ''' df.select('abc').show() ''' output: +---+ |abc| +---+ | 2| +---+ ''' df.select('Abc').show() ''' output: Traceback (most recent call last): ... pyspark.sql.utils.AnalysisException: "cannot resolve '`Abc`' given input columns: [ABC, abc];;\n'Project ['Abc]\n+- LogicalRDD [ABC#39L, abc#40L], false\n" '''
반응형'Open Source > Spark' 카테고리의 다른 글
Spark Cluster 구축 (Standalone Mode) (0) 2021.09.14 [Spark] The case sensitive option of spark (0) 2020.10.21 [Spark] Altibase 데이터베이스 연동 (0) 2020.10.16