开源的现代数据探索和可视化平台:Apache Superset 配置缓存 Caching

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

Apache Superset
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 库:

  • Redis:推荐使用 redis Python 包
  • Memcached:推荐使用 pylibmc 客户端库,因为 python-memcached 无法正确处理二进制数据。

可使用 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

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值