HAZEL

[Pyspark 에러] pyspark.sql.utils.AnalysisException: "cannot resolve '`column_name`' given input columns: [] 본문

DATA ANALYSIS/PySpark

[Pyspark 에러] pyspark.sql.utils.AnalysisException: "cannot resolve '`column_name`' given input columns: []

Rmsid01 2022. 3. 22. 10:58

 

에러 코드 

Traceback (most recent call last):
  File "/tmp/pycharm_project_578/main.py", line 115, in <module>
    main()
  File "/tmp/pycharm_project_578/main.py", line 95, in main
    pv = user_action_df.select(col('metaData.responseTotalCount'))
  File "/usr/lib/spark/python/pyspark/sql/dataframe.py", line 1320, in select
    jdf = self._jdf.select(self._jcols(*cols))
  File "/usr/lib/spark/python/lib/py4j-src.zip/py4j/java_gateway.py", line 1257, in __call__
  File "/usr/lib/spark/python/pyspark/sql/utils.py", line 69, in deco
    raise AnalysisException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.AnalysisException: "cannot resolve '`metaData.responseTotalCount`' given input columns: [metaData.requestFilter.classModelNo,..]

 

 

 

에러 상황

1. Spark DF 의 테이블은 아래와 같이 단순 문자열이 아닌 < . > 이 포함되어있었다.

 

2. 위와 같은 테이블에서, 아래와 같은 코드로 특정 컬럼을 select 하려고하니, 에러가 발생하였다.

pv = user_action_df.select(col('metaData.responseTotalCount'))
print(pv.show())

 

 

에러 해결

해결방법은 완전 단순하였다.. ` 를 컬럼사이에 넣어주면 된다..ㅎ

저건 어쩔수없이 받아오는 테이블이여서 저렇게 되었지만, 애초에 컬럼이름을 저렇게 작성하지 않는게 좋을것같다.

pv = user_action_df.select(col('`metaData.responseTotalCount`'))
print(pv.show())

 

에러 없이 결과 해결 !