【Apache Cassandra】cqlshコマンドのエラー解決方法

【Apache Cassandra】cqlshコマンドのエラー解決方法 サーバー

「Apache Cassandraのcqlshコマンドを利用できない・・・」
「ModuleNotFoundError: No module named ‘cqlshlib’エラーが出てしまう・・・」

このような場合には、この記事の内容が参考になります。
この記事では、cqlshコマンドのエラーを解決する方法を解説しています。

本記事の内容

  • cqlshとは?
  • cqlshコマンド実行時にエラーが発生
  • cqlshパッケージのインストール
  • cqlshコマンドの動作確認

それでは、上記に沿って解説していきます。

cqlshとは?

cqlshとは、Cassandraクエリー言語(CQL)シェルのことを言います。
詳しく言うと、CQLコマンドを対話形式で実行するためのコマンドライン・クライアントです。

CQLコマンドは、Apache Cassandraを操作するためのコマンドになります。
嬉しいことに、CQLはSQLと同じような構文です。
つまり、SQLが使えるならCQLをすんなり理解できるでしょう。

また、cqlshはPythonで開発されています。
そのため、cqlshの利用にはPythonが要件となります。

この要件が、Apache Cassandraのシステム要件として挙げられています。

現時点で最新版となるApache Cassandra 4.0.4では、以下がPythonに関する要件となります。

Python 3.6+ or Python 2.7

なお、Python 2.7は論外として、Python 3.7以降をオススメしておきます。
以下は、Python公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python 3.6は、すでにサポート期限が切れています。
Apache Cassandraだけで考えるなら、最新バージョンのPython 3.10のインストールが無難です。

Pythonの最新バージョンのインストールについては、次の記事で解説しています。

以上、cqlshについて説明しました。
次は、cqlshコマンド実行時にエラーが発生を説明します。

cqlshコマンド実行時にエラーが発生

cqlshは、次のコマンドで起動できます。

cqlsh

実行した結果、次のようなエラーが出てしまいました。

$ cqlsh 
Traceback (most recent call last): 
  File "/usr/bin/cqlsh.py", line 159, in <module> 
    from cqlshlib import cql3handling, cqlhandling, pylexotron, sslhandling, cqlshhandling 
ModuleNotFoundError: No module named 'cqlshlib'

Pythonは、現時点での最新版Pythonをインストール済みです。
インストールは、上記で挙げた記事通りに行っています。

$ python --version 
Python 3.10.5

バージョンに関しては、問題はありません。
エラー内容からすると、モジュールが足りないようです。

インストール済みのパッケージを確認しましょう。
pipはpip3でも構いません。(同様にpythonでもpython3でも同じです)

$ pip list 
Package    Version 
---------- ------- 
pip        22.1.2 
setuptools 62.3.3

確かに、「cqlshlib」のようなパッケージは見当たりません。
そのため、「cqlshlib」をモジュールに含むパッケージのインストールが必要となります。

以上、cqlshコマンド実行時にエラーが発生について説明しました。
次は、cqlshパッケージのインストールを説明します。

cqlshパッケージのインストール

cqlsh(PyPl)
https://pypi.org/project/cqlsh/

cqlshという名称でパッケージが、公開されています。
そして、cqlshパッケージのシステム要件は以下となります。

Python 3.10が記載されていませんが、問題ありません。
基本的には、上位のPythonバージョンであれば大丈夫です。

cqlshパッケージをインストールしましょう。
その前に、pipとsetuptoolsを更新しておきます。

python -m pip install --upgrade pip setuptools

では、cqlshパッケージです。
cqlshパッケージのインストールには、次のコマンドを用います。

pip install cqlsh

インストールには、少しだけ時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list 
Package          Version 
---------------- ----------- 
cassandra-driver 3.25.0 
click            8.1.3 
cql              1.4.0 
cqlsh            6.0.0 
geomet           0.2.1.post1 
pip              22.1.2 
setuptools       62.3.3 
six              1.16.0 
thrift           0.16.0

思ったよりたくさんのパッケージがインストールされました。
それだけ依存するパッケージがあるということです。

以上、cqlshパッケージのインストールを説明しました。
次は、cqlshコマンドの動作確認を行います。

cqlshコマンドの動作確認

cqlshコマンドを実行します。

$ cqlsh 
Connected to Test Cluster at 127.0.0.1:9042 
[cqlsh 6.0.0 | Cassandra 4.0.4 | CQL spec 3.4.5 | Native protocol v5] 
Use HELP for help. 
cqlsh>

無事、cqlshが起動しました。
「help」を打てば、ヘルプが利用できます。
では、「help」を入力してみましょう。

cqlsh> help 
Documented shell commands: 
=========================== 
CAPTURE  CLS          COPY  DESCRIBE  EXPAND  LOGIN   SERIAL  SOURCE   UNICODE 
CLEAR    CONSISTENCY  DESC  EXIT      HELP    PAGING  SHOW    TRACING 
CQL help topics: 
================ 
AGGREGATES               CREATE_KEYSPACE           DROP_TRIGGER      TEXT 
ALTER_KEYSPACE           CREATE_MATERIALIZED_VIEW  DROP_TYPE         TIME 
ALTER_MATERIALIZED_VIEW  CREATE_ROLE               DROP_USER         TIMESTAMP 
ALTER_TABLE              CREATE_TABLE              FUNCTIONS         TRUNCATE 
ALTER_TYPE               CREATE_TRIGGER            GRANT             TYPES 
ALTER_USER               CREATE_TYPE               INSERT            UPDATE 
APPLY                    CREATE_USER               INSERT_JSON       USE 
ASCII                    DATE                      INT               UUID 
BATCH                    DELETE                    JSON 
BEGIN                    DROP_AGGREGATE            KEYWORDS 
BLOB                     DROP_COLUMNFAMILY         LIST_PERMISSIONS 
BOOLEAN                  DROP_FUNCTION             LIST_ROLES 
COUNTER                  DROP_INDEX                LIST_USERS 
CREATE_AGGREGATE         DROP_KEYSPACE             PERMISSIONS 
CREATE_COLUMNFAMILY      DROP_MATERIALIZED_VIEW    REVOKE 
CREATE_FUNCTION          DROP_ROLE                 SELECT 
CREATE_INDEX             DROP_TABLE                SELECT_JSON

表示される内容は、CQLコマンド一覧になります。
確かに、SQLとよく似ています。
と言うか、ほぼ同じです。

ここま確認できれば、もう安心ですね。
cqlshコマンドの動作確認としては、これで完了とします。

以上、cqlshコマンドの動作確認を説明しました。

タイトルとURLをコピーしました