「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.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年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コマンドの動作確認を説明しました。