快取
Superset 使用 Flask-Caching 作為快取用途。Flask-Caching 支援各種快取後端,包括 Redis(建議)、Memcached、SimpleCache(記憶體內)或本機檔案系統。也支援自訂快取後端。
可以透過在 superset_config.py
中提供符合 Flask-Caching 設定規格的字典來設定快取。
以下快取設定可以透過這種方式自訂
- 儀表板篩選器狀態(必要):
FILTER_STATE_CACHE_CONFIG
。 - 探索圖表表單資料(必要):
EXPLORE_FORM_DATA_CACHE_CONFIG
- 中繼資料快取(選用):
CACHE_CONFIG
- 從資料集查詢的圖表資料(選用):
DATA_CACHE_CONFIG
例如,若要使用 Redis 設定篩選器狀態快取
FILTER_STATE_CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 86400,
'CACHE_KEY_PREFIX': 'superset_filter_cache',
'CACHE_REDIS_URL': 'redis://127.0.0.1:6379/0'
}
相依性
為了使用專用的快取儲存,必須安裝額外的 Python 程式庫
可以使用 pip 安裝這些程式庫。
備用中繼資料儲存快取
請注意,某些形式的篩選器狀態和探索快取是必要的。如果未定義其中任一快取,Superset 會回退使用將資料儲存在中繼資料資料庫中的內建快取。雖然建議使用專用快取,但內建快取也可以用於快取其他資料。
例如,若要使用內建快取來儲存圖表資料,請使用以下設定
DATA_CACHE_CONFIG = {
"CACHE_TYPE": "SupersetMetastoreCache",
"CACHE_KEY_PREFIX": "superset_results", # make sure this string is unique to avoid collisions
"CACHE_DEFAULT_TIMEOUT": 86400, # 60 seconds * 60 minutes * 24 hours
}
圖表快取逾時
圖表的快取逾時可能會被個別圖表、資料集或資料庫的設定覆寫。在回退至 DATA_CACHE_CONFIG
中定義的預設值之前,將依序檢查每個設定。
請注意,透過將快取逾時設定為 -1
,可以停用圖表資料的快取,無論是每個圖表、資料集或資料庫,或是在 DATA_CACHE_CONFIG
中設定的預設值。
SQL Lab 查詢結果
當啟用非同步查詢時,會使用 SQL Lab 查詢結果的快取,並使用 RESULTS_BACKEND
進行設定。
請注意,此設定並未使用 flask-caching 字典進行設定,而是需要一個 cachelib 物件。
請參閱 透過 Celery 進行非同步查詢 以取得詳細資訊。
快取縮圖
這是一項選用功能,可以透過啟用其在設定上的 功能旗標 來開啟
FEATURE_FLAGS = {
"THUMBNAILS": True,
"THUMBNAILS_SQLA_LISTENERS": True,
}
預設情況下,縮圖會針對每個使用者進行轉譯,對於匿名使用者則會回退使用 Selenium 使用者。若要始終將縮圖轉譯為固定使用者(在此範例中為 admin
),請使用以下設定
from superset.tasks.types import ExecutorType
THUMBNAIL_SELENIUM_USER = "admin"
THUMBNAIL_EXECUTE_AS = [ExecutorType.SELENIUM]
對於此功能,您將需要快取系統和 Celery 工作者。所有縮圖都儲存在快取中,並由工作者非同步處理。
一個將影像儲存在 S3 上的範例設定可能是
from flask import Flask
from s3cache.s3cache import S3Cache
...
class CeleryConfig(object):
broker_url = "redis://127.0.0.1:6379/0"
imports = (
"superset.sql_lab",
"superset.tasks.thumbnails",
)
result_backend = "redis://127.0.0.1:6379/0"
worker_prefetch_multiplier = 10
task_acks_late = True
CELERY_CONFIG = CeleryConfig
def init_thumbnail_cache(app: Flask) -> S3Cache:
return S3Cache("bucket_name", 'thumbs_cache/')
THUMBNAIL_CACHE_CONFIG = init_thumbnail_cache
# Async selenium thumbnail task will use the following user
THUMBNAIL_SELENIUM_USER = "Admin"
使用上述範例,儀表板的快取金鑰將會是 superset_thumb__dashboard__{ID}
。您可以使用以下方式覆寫 Selenium 的基本網址
WEBDRIVER_BASEURL = "https://superset.company.com"
可以使用 WEBDRIVER_CONFIGURATION
設定其他 Selenium Web Drive 設定。您可以實作自訂函式來驗證 Selenium。預設函式會使用 flask-login
會話 Cookie。以下是自訂函式簽章的範例
def auth_driver(driver: WebDriver, user: "User") -> WebDriver:
pass
然後在設定上
WEBDRIVER_AUTH_FUNC = auth_driver