본문 바로가기
카테고리 없음

[Superset] Dashboard import 오류 by MariaDB

by 쿡노트 2023. 8. 31.
반응형

Superset Dashboard를 개발서버에서 개발하고, 운영에 반영하기 전 개인적으로 VM에 사전 Import 테스트를 해보았다.(superset 설치부터 Dashboard 이관 테스트)

신규로 VM에 Maria DB를 설치하고, superset 설치 후 Dashboard를 import 시 에러가 났다.
Superset version 2.0.1
Superset metadata database : Maria DB 10.3.8
dataset은 이미 개발된 환경 사용 (Vertica DB)

 

Superset Web UI Import 에러

Superset.out 에러 로그 확인

에러 로그를 봤을 때 처음 에러 발생 시점을 확인해야 한다. 에러 로그를 올려보면 'Importing new dbs Vertica' 문구를 찾고, 그 직후에 나오는 에러 로그를 본다.

$ cat superset.out

...

File "/home/superset/.local/lib/python3.9/site-packages/MySQLdb/connections.py", line 254, in query
    _mysql.connection.query(self, query)
MySQLdb.OperationalError: (1366, "Incorrect string value: '\\xEC\\x9D\\x91\\xEB\\x8B\\xB5...' for column `superset`.`table_columns`.`verbose_name` at row 1")

 

해당 에러는 metadata base MariaDB에 한글 입력 때문에 오류가 발생한 내역이다.

 

해결 방법

MariaDB 는 Default 저장 문자가 utf-8이 아니므로 my.cnf에 설정을 해주면 된다.
참조 URL : https://m.blog.naver.com/khsmonad/221677021503

my.cnf 편집

my.cnf는 보통 /etc에 있다.

# vi /etc/my.cnf

#utf8 config
[mysqld]
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
[client]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8


MariaDB 재시작 - utf8 적용 확인


MariaDB [(none)]> show variables like 'c%';
+----------------------------------+----------------------------+
| Variable_name                    | Value                      |
+----------------------------------+----------------------------+
| character_set_client             | utf8                       |
| character_set_connection         | utf8                       |
| character_set_database           | utf8                       |
| character_set_filesystem         | binary                     |
| character_set_results            | utf8                       |
| character_set_server             | utf8                       |
| character_set_system             | utf8                       |
| character_sets_dir               | /usr/share/mysql/charsets/ |
| check_constraint_checks          | ON                         |
| collation_connection             | utf8_general_ci            |
| collation_database               | utf8_general_ci            |
| collation_server                 | utf8_general_ci            |
| column_compression_threshold     | 100                        |
| column_compression_zlib_level    | 6                          |
| column_compression_zlib_strategy | DEFAULT_STRATEGY           |
| column_compression_zlib_wrap     | OFF                        |
| completion_type                  | NO_CHAIN                   |
| concurrent_insert                | AUTO                       |
| connect_timeout                  | 10                         |
| core_file                        | OFF                        |
+----------------------------------+----------------------------+
20 rows in set (0.001 sec)

 

한글 입력 오류 시 해당 문제가 나는 테이블들을 ALTER 구문으로 utf8 적용해 주면 된다고 하는데

**개별 테이블 변경 : ALTER TABLE (테이블명) convert to charset utf8; 

VM이라 MariaDB utf-8 적용하고 superset database를 Drop 한 후 database를 재생성 하고, 아래 명령어로 superset database를 초기화했다.


$ superset db upgrade
$ superset fab create-admin
$ superset init


Superset에서 Database, Dataset를 Web UI로 아무것도 등록 안한 상태에서 Daschboard를 import 했다. import는 잘 되며, 추가로 Database, Dataset도 등록된다.(Dashboard를 export 한 yaml파일에 Database, Dataset 정보가 포함)

참조로 Dashboard import는 성공 했는데, 아래 이미지처럼 문구가 나오고, 내가 만든 차트가 안 나올 경우 Dashboard 상단에 EDIT를 눌러서 Daschboard 편집창 하단에 내가 만든 차트가 보인다. (만들었던 차트가 지워진 건 아니고, 하단에 존재한다. 불필요한 차트 삭제 및 차트 위치, 크기는 조절 필요) 


이 문제는 dataset이나 칼럼에 한글 입력값 때문인지 확인해 보고 추후에 포스팅하겠다.

 

추가 : Superset 공식 문서에는 Metadata database를 PostgreSQL, MySQL 지원한다고 하는데, 운영환경에서 Maria DB를 사용해서, MariaDB로 개발하고, 테스트했다.
https://superset.apache.org/docs/installation/configuring-superset/
Using a production metastore <--이 부분 확인

 

감사합니다.

반응형