Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra CQL(cqlsh)docker容器到docker Cassandra群集_Docker_Cassandra_Cql_Cqlsh - Fatal编程技术网

Cassandra CQL(cqlsh)docker容器到docker Cassandra群集

Cassandra CQL(cqlsh)docker容器到docker Cassandra群集,docker,cassandra,cql,cqlsh,Docker,Cassandra,Cql,Cqlsh,我正在尝试为Cassandra CQL创建一个新的docker容器,该容器连接到作为另一个docker容器运行的Cassandra集群 当前情况: 我通过执行以下命令创建了一个新的Cassandra图像“Cassandra”和名为“container node”的容器: docker pull cassandra docker images| grep cassandra docker run-d--命名cassandra节点--发布9042:9042 cassandra 连接到容器:dock

我正在尝试为Cassandra CQL创建一个新的docker容器,该容器连接到作为另一个docker容器运行的Cassandra集群

当前情况:

我通过执行以下命令创建了一个新的Cassandra图像“Cassandra”和名为“container node”的容器:

  • docker pull cassandra
  • docker images| grep cassandra
  • docker run-d--命名cassandra节点--发布9042:9042 cassandra
  • 连接到容器:docker exec-it cassandra node bash (连接到127.0.0.1:9042处的测试群集)
键空间创建
  • 创建键空间:首先创建键空间\u键空间,复制={'class':'SimpleStrategy','replication\u factor':1}
  • 连接到键空间:使用第一个键空间
  • 创建表:首先创建表\u keyspace.user(USERID int主键、用户名文本、城市文本); 插入数据:
  • 在用户(USERID、USERNAME、CITY)值中插入(1,'JOHN','PARIS')
  • 在用户(USERID、USERNAME、CITY)值中插入(2,'ABD','SAFRICA')
  • 获取数据:从用户中选择*
详细问题陈述 想要为CQL(cqlsh)创建一个新的Docker容器(使用Dockerfile),该容器将执行以下任务:

  • 连接到作为Docker容器运行的Cassandra群集(Cassandra主机)
  • source.sql文件执行所有任务添加/更新/删除函数读取
  • 我想知道从哪里开始。
    如果有任何帮助,指针们将不胜感激。

    不确定cassandra是否支持.sql文件。我认为这是一个打字错误

    从.cql文件加载数据的命令如下:

    bin/cqlsh --file 'file_name'
    
    您所需要做的就是在容器中运行这样的命令。但在此之前,您需要确保该文件在容器中是可访问的。有两种方法可以做到这一点:在映像创建期间(对于init脚本类需求)和卷映射期间(对于其他需求),将文件复制到容器中。Dockerfile示例:

    FROM cassandra
    COPY some-file.cql /home/some-file.cql
    CMD["cqlsh","<cassandra-docker-container-ref>","-f","/home/some-file.sql"]
    
    并将图像作为容器运行,然后立即将其删除:

    docker run -it --rm cassandra-seed-script 
    

    如果您需要定期使用不同的cql文件执行此操作,请将容器中的位置与主机进行卷映射,并使命令动态(或在启动容器时传递命令)。

    为什么不使用
    docker exec-ti running_image cqlsh
    ?Alex,感谢您的回复。我需要另一个容器cqlsh,它将连接到外部Cassandra集群以执行键空间执行
    docker run -it --rm cassandra-seed-script