슈퍼 세트 배포

4562 단어 Ubuntusuperset

Overview


기존 시스템의 데이터베이스에 액세스할 때까지(MySQL)

Environment


superset : 0.20.4
OS : Ubuntu Xenial
DB : MySQL 5.7.19
Python : 2.7.12

Installation


공식 문서에 따라 모바일 슈퍼셋에 필요한 패키지를 먼저 설치합니다.
Ubuntu의 경우
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
문서에서 virtual env 를 사용했지만 이번에는 슈퍼셋용 가상 머신 실례를 준비했기 때문에 이 절차를 생략했다.
슈퍼셋 자체는 pip로 간단하게 설치할 수 있습니다.
https://superset.incubator.apache.org/installation.html#superset-installation-and-initialization
Superset runserver 명령을 실행할 때 기본적으로 8088 포트에서 Superset을 시작합니다.
http://127.0.0.1:8088
fabmanager create-admin --app superset
이 명령으로 만든 사용자가 로그인하면 잠시 완료됩니다.

Settings


상술한 방법을 통해 슈퍼세트 설치를 마쳤지만 실제 운용할 때 다음과 같은 변경을 하고 싶습니다.
  • superset에서 사용하는 데이터베이스를 sqlite에서 mysql
  • 로 변경
  • 데이터 원본에 기존 시스템의 데이터베이스 추가(mysql)
  • 슈퍼셋에서 사용하는 데이터베이스를 sqlite에서 mysql로 변경


    superset_config.py 만들기
    cd /usr/local/lib/python2.7/dist-packages/superset # 環境によって異なります
    touch superset_config.py
    
    superset_config.py에 기록된 레코드 예제를 복사하여 SQLALCHEMY_DATABASE_URI 항목을 대상으로 변경합니다.
    기재 방법은 mysql://dbuser:dbpass@hostname/dbname.
    연결 위치를 변경한 후 관리자 사용자와 데이터베이스 마이그레이션을 다시 수행합니다.
    fabmanager create-admin --app superset
    superset db upgrade
    superset init
    
    mysql에서 데이터베이스 문자 인코딩을utf8mb4로 설정하면supersetdbupgrade를 실행할 때 다음과 같은 오류가 발생하여 이전을 정상적으로 완성할 수 없습니다
    sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1071, 'Specified key was too long; max key length is 767 bytes') [SQL: u'\nCREATE TABLE clusters (\n\tcreated_on DATETIME NOT NULL, \n\tchanged_on DATETIME NOT NULL, \n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\tcluster_name VARCHAR(250), \n\tcoordinator_host VARCHAR(255), \n\tcoordinator_port INTEGER, \n\tcoordinator_endpoint VARCHAR(255), \n\tbroker_host VARCHAR(255), \n\tbroker_port INTEGER, \n\tbroker_endpoint VARCHAR(255), \n\tmetadata_last_refreshed DATETIME, \n\tcreated_by_fk INTEGER, \n\tchanged_by_fk INTEGER, \n\tPRIMARY KEY (id), \n\tUNIQUE (cluster_name), \n\tFOREIGN KEY(created_by_fk) REFERENCES ab_user (id), \n\tFOREIGN KEY(changed_by_fk) REFERENCES ab_user (id)\n)\n\n']
    
    "Specified key was too long; max key length is767bytes"에서 말한 바와 같이 키는 최대 767byte만 사용할 수 있습니다.
    PRIMARY 또는 UNIQUE에 대한 열이 varchar(256)로 설정된 경우 utf8에서도 같은 오류가 발생합니다.
    이 경우 UNIQUE가 설정된 cluster_name 및 verbose_name의 varchar(250)가 걸린 것으로 여겨지기 때문에 이를 varchar(191) 등으로 변경하면 이전 자체가 정상적으로 완료됩니다.
    그러나 소프트웨어의 동작 &superset에서 그림 문자와 같은 4바이트 문자를 사용하지 않을 수 있으므로 데이터베이스 문자 인코딩을utf8로 성실하게 변경하세요.

    데이터 소스 추가


    웹 페이지에 데이터 원본을 추가합니다.
    공식 문서
    SQLALchemy URI의 항목은 위 표식과 같습니다.

    테스트 연결은 정상적으로 진행될 수 있지만 "This endpoint requires the datasource database_name, database or all_datasource_access permission" 으로 표시되며 내용을 표시하지 않습니다.


    로그인한 사용자에게admin role를 주었기 때문에 처음에는 원인을 알 수 없지만 데이터베이스에 개별적인 권한을 주어야 할 것 같습니다.
    또한 공식 문서에 라고 불리는 롤은 모든 데이터 원본에 대한 접근 권한을 가지고 있지만 내 환경에서는admin과public만 미리 준비되어 있다.
    이번에는 슈퍼셋의 사용 목적이 결정돼 실행되지 않았지만 실행superset load_examples하면 제작될 수 있다.

    데몬으로 시작하고 싶어요.

    superset runserver 명령은 데몬 프로세스에서 시작하는 옵션을 제공하지 않습니다.
    위 명령을 실행할 때
    gunicorn -w 2 --timeout 60 -b  0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app
    
    의 명령.
    따라서superset의 루트 디렉터리에 상기gunicorn 명령에 "-D"옵션을 추가하고 실행하면 수호 프로그램으로superset을 시작할 수 있습니다.
    cd /usr/local/lib/python2.7/dist-packages/superset # 環境によって異なります
    gunicorn -w 2 --timeout 60 -b  0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app -D
    

    좋은 웹페이지 즐겨찾기