如何在cassandra的docker实例中启用用户定义的函数?

问题描述 投票:0回答:2

当我尝试在cassandra中创建一个简单的减法函数时出现以下错误:

user defined functions are disabled in cassandra.yaml set enable user defined functions=true

我无法弄清楚如何将其设置为true。我该怎么做呢?我正在运行cassandra的docker实例,这使得它变得更加困难。

docker cassandra cql udf
2个回答
1
投票

您需要修改Dockerfile中的cassandra.yaml文件。您可以创建一个单独的图层作为原始Cassandra图像的扩展(更多here)。

假设您使用的是Cassandra 3,并且已从软件包安装中安装,其位置为:

/etc/cassandra/cassandra.yaml

here记录了不同安装选项(tarball等)的其他可能位置。如果你正在运行this Docker镜像,你可能应该在/ etc / cassandra中找到它。

一旦确定安装路径,就可以使用sed来更改文件。使用Docker的RUN命令运行它:

RUN sed -i -r 's/enable_user_defined_functions=false/enable_user_defined_functions=true/' /etc/cassandra/cassandra.yaml

然后重启节点。


1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.