clickhouse初探
安装
在debian10上安装clickhouse,安装过程中会提示输入默认账户default
的密码,直接Eenter,后续再设置密码。
sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
echo "deb https://repo.clickhouse.tech/deb/stable/ main/" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start
clickhouse-client
卸载
sudo apt-get -y remove clickhouse*
# 找出安装的其他文件,全部删除
sudo find / -name clickhouse* | xargs sudo rm -rf
设置密码
编辑 /etc/clickhouse-server/users.xml
文件
-
方式1:明文密码(不推荐),例如
<password>qwerty</password>
-
方式2:SHA256加密后的密码,将密文写在字段
<password_sha256_hex>
和</password_sha256_hex>
之间,例如:<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>
.`echo -n "123456" | sha256sum | tr -d '-' # 明文密码123456使用SHA256加密后的密文
远程访问
修改配置文件,将<listen_host>0.0.0.0</listen_host>
注释去掉
vim /etc/clickhouse-server/config.xml
使用dbeaver连接,数据库/模式
和用户名
都是default
。
sudo systemctl restart clickhouse-server # 重启服务
clickhouse-client --password # 使用default密码登录
修改数据存储路径
clickhouse安装后默认的存储路径是/var/lib/clickhouse
,不需要修改配置文件,数据实际存储在你修改的目录中,只是建立了一个软连接供clickhouse调用。
# 新建新的路径
mkdir /data/clickhouse
# 将原有的文件复制到新的目录
cp -r /var/lib/clickhouse/* /data/clickhouse/
# 重命名原有文件夹,防止设置失败,便于恢复,设置成功后可以删除
mv /var/lib/clickhouse /var/lib/clichouse_backup
# 创建软连接
ln -s /data/clickhouse/ /var/lib/clickhouse
# 修改权限
chown -R clickhouse:clickhouse /data/clickhouse
chown -R clickhouse:clickhouse /var/lib/clickhouse
# 重启服务
systemctl restart clickhouse-server
管理数据
clickhouse-driver
pip install clickhouse-driver[numpy] # 安装适用pandas和numpy的clickhouse-driver
# 连接数据库
client = Client('localhost', password='xxxx', settings={'use_numpy': True})
# 新增数据
client.insert_dataframe('insert into insert_select_testtable values', df)
# 查询数据
client.execute('SELECT * FROM system.numbers LIMIT 10000',columnar=True)
# 结果:[array([ 0, 1, 2, ..., 9997, 9998, 9999], dtype=uint64)]
client.query_dataframe('
'SELECT number AS x, (number + 100) AS y '
'FROM system.numbers LIMIT 10000)
结果:
x y
0 0 100
1 1 101
2 2 102
3 3 103
4 4 104
... ... ...
9995 9995 10095
9996 9996 10096
9997 9997 10097
9998 9998 10098
9999 9999 10099
[10000 rows x 2 columns]