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 <--이 부분 확인
감사합니다.