如何在 docker cassandra 实例中启用用户定义的函数?
How to enable user defined functions in docker instance of cassandra?
当我尝试在 cassandra 中创建一个简单的减法函数时出现以下错误:
user defined functions are disabled in cassandra.yaml set enable user defined functions=true
我不知道如何将其设置为 true。我该去哪里做这件事?我是 运行 一个 docker 的 cassandra 实例,这使得它变得更加困难。
您需要修改 Docker 文件中的 cassandra.yaml 文件。
您可以创建一个单独的层作为原始 Cassandra 图像的扩展(更多 here)。
假设您使用的是 Cassandra 3,并且您是从包安装中安装的,其位置是:
/etc/cassandra/cassandra.yaml
记录了不同安装选项(tarball 等)的其他可能位置 here. If you are running this Docker 图片,您应该可以在 /etc/cassandra.
一旦确定了安装路径,就可以使用 sed 就地更改文件。 运行 它与 Docker 的 运行 命令:
RUN sed -i -r 's/enable_user_defined_functions=false/enable_user_defined_functions=true/' /etc/cassandra/cassandra.yaml
然后重启一个节点。
在您的 docker-compose.yaml
文件中,根据您的环境添加以下内容:
environment:
- CASSANDRA_ENABLE_USER_DEFINED_FUNCTIONS=true
然后,修改docker-entrypoint.sh
(可以从here获取),添加
enable_user_defined_functions
for yaml in \
broadcast_address \
broadcast_rpc_address \
cluster_name \
endpoint_snitch \
listen_address \
num_tokens \
rpc_address \
start_rpc \
enable_user_defined_functions \
此外,您需要使用修改后的版本覆盖 docker-entrypoint.sh:
volumes:
- ./db/Cassandra/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
当我尝试在 cassandra 中创建一个简单的减法函数时出现以下错误:
user defined functions are disabled in cassandra.yaml set enable user defined functions=true
我不知道如何将其设置为 true。我该去哪里做这件事?我是 运行 一个 docker 的 cassandra 实例,这使得它变得更加困难。
您需要修改 Docker 文件中的 cassandra.yaml 文件。 您可以创建一个单独的层作为原始 Cassandra 图像的扩展(更多 here)。
假设您使用的是 Cassandra 3,并且您是从包安装中安装的,其位置是:
/etc/cassandra/cassandra.yaml
记录了不同安装选项(tarball 等)的其他可能位置 here. If you are running this Docker 图片,您应该可以在 /etc/cassandra.
一旦确定了安装路径,就可以使用 sed 就地更改文件。 运行 它与 Docker 的 运行 命令:
RUN sed -i -r 's/enable_user_defined_functions=false/enable_user_defined_functions=true/' /etc/cassandra/cassandra.yaml
然后重启一个节点。
在您的 docker-compose.yaml
文件中,根据您的环境添加以下内容:
environment:
- CASSANDRA_ENABLE_USER_DEFINED_FUNCTIONS=true
然后,修改docker-entrypoint.sh
(可以从here获取),添加
enable_user_defined_functions
for yaml in \
broadcast_address \
broadcast_rpc_address \
cluster_name \
endpoint_snitch \
listen_address \
num_tokens \
rpc_address \
start_rpc \
enable_user_defined_functions \
此外,您需要使用修改后的版本覆盖 docker-entrypoint.sh:
volumes:
- ./db/Cassandra/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh