如何在Docker容器中启用Cassandra的物化视图?
如何在Cassandra Docker镜像中启用物化视图
官方Cassandra Docker镜像并未提供CASSANDRA_MATERIALIZED_VIEWS_ENABLED这类环境变量,要启用物化视图,需要修改Cassandra核心配置文件或通过启动参数覆盖配置,以下是两种可行方案:
方案一:挂载自定义配置文件
- 先从容器导出默认配置文件到本地:
docker run --rm cassandra:latest cat /etc/cassandra/cassandra.yaml > ./cassandra.yaml
- 编辑本地的
cassandra.yaml,找到materialized_views_enabled项,将值改为true(默认可能为false或被注释):
materialized_views_enabled: true
- 修改你的docker-compose.yaml,添加配置文件挂载:
cassandra: image: cassandra:latest container_name: cassandra ports: - "9042:9042" environment: - CASSANDRA_USER=cassandra - CASSANDRA_PASSWORD=cassandra volumes: - ./cassandra.yaml:/etc/cassandra/cassandra.yaml - cassandra_data:/var/lib/cassandra healthcheck: test: [ "CMD", "cqlsh", "-e", "describe keyspaces" ] interval: 30s timeout: 10s retries: 5
- 重启容器生效:
docker-compose down && docker-compose up -d
方案二:启动时通过命令参数覆盖配置
如果不想挂载整个配置文件,可直接在docker-compose中通过启动命令设置参数:
cassandra: image: cassandra:latest container_name: cassandra ports: - "9042:9042" environment: - CASSANDRA_USER=cassandra - CASSANDRA_PASSWORD=cassandra command: ["cassandra", "-Dmaterialized_views_enabled=true"] volumes: - cassandra_data:/var/lib/cassandra healthcheck: test: [ "CMD", "cqlsh", "-e", "describe keyspaces" ] interval: 30s timeout: 10s retries: 5
验证配置是否生效
容器启动后,进入cqlsh执行以下命令测试:
CREATE KEYSPACE test_mv WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; USE test_mv; CREATE TABLE users (id UUID PRIMARY KEY, name TEXT, email TEXT); CREATE MATERIALIZED VIEW users_by_email AS SELECT id, name FROM users WHERE email IS NOT NULL AND id IS NOT NULL PRIMARY KEY (email, id);
若能成功创建物化视图,则说明配置已生效。
内容的提问来源于stack exchange,提问作者Armani_bologne
相关产品推荐
相关产品推荐

