文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。
Apache Superset™ 是一个开源的现代数据探索和可视化平台。对于许多团队来说,Superset 可以取代或增强专有的商业智能工具。Superset 可以与各种数据源很好地集成。
缓存
Caching
Superset 使用 Flask-Caching 实现缓存功能。
Flask-Caching 支持多种缓存后端,包括 Redis(推荐)、Memcached、SimpleCache(内存中)或本地文件系统。
自定义缓存后端 同样受支持。
通过向 superset_config.py
提供符合 Flask-Caching 配置规范 的字典即可完成缓存配置。
可按此方式自定义以下缓存配置:
- Dashboard 过滤器状态(必需):
FILTER_STATE_CACHE_CONFIG
- Explore 图表表单数据(必需):
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://localhost:6379/0'
}
依赖
如需使用专用缓存存储,必须安装额外的 Python 库:
可使用 pip 安装这些库。
回退 Metastore 缓存
请注意,必须启用某种形式的过滤器状态和 Explore 缓存。若两者均未定义,Superset 将回退到使用内置缓存,把数据存储在元数据库中。虽然建议使用专用缓存,但也可使用内置缓存存储其他数据。
例如,使用内置缓存存储图表数据时,请使用以下配置:
DATA_CACHE_CONFIG = {
"CACHE_TYPE": "SupersetMetastoreCache",
"CACHE_KEY_PREFIX": "superset_results", # 确保此字符串唯一,以避免冲突
"CACHE_DEFAULT_TIMEOUT": 86400, # 60 秒 * 60 分钟 * 24 小时
}
图表缓存超时
图表的缓存超时可通过单个图表、数据集或数据库的设置进行覆盖。在回退到 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 FixedExecutor
THUMBNAIL_EXECUTORS = [FixedExecutor("admin")]
此功能需要缓存系统和 Celery 工作进程。所有缩略图均存储在缓存中,并由工作进程异步处理。
示例配置,将图片存储在 S3:
from flask import Flask
from s3cache.s3cache import S3Cache
...
class CeleryConfig(object):
broker_url = "redis://localhost:6379/0"
imports = (
"superset.sql_lab",
"superset.tasks.thumbnails",
)
result_backend = "redis://localhost: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
使用以上示例时,仪表板的缓存键将为 superset_thumb__dashboard__{ID}
。
可通过以下方式覆盖 selenium 使用的基础 URL:
WEBDRIVER_BASEURL = "https://superset.company.com"
可通过 WEBDRIVER_CONFIGURATION
设置额外的 selenium web 驱动配置。
可实现自定义函数以验证 selenium。默认函数使用 flask-login
会话 cookie。
自定义函数签名示例如下:
def auth_driver(driver: WebDriver, user: "User") -> WebDriver:
pass
然后在配置中:
WEBDRIVER_AUTH_FUNC = auth_driver
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。