You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
clickhouse-client --query "INSERT INTO tutorial.hits_v1 FORMAT TSV" --max_insert_block_size=100000 < hits_v1.tsv
clickhouse-client --query "INSERT INTO tutorial.visits_v1 FORMAT TSV" --max_insert_block_size=100000 < visits_v1.tsv
# clickhouse-client --query "INSERT INTO tutorial.hits_v1 FORMAT TSV" --max_insert_block_size=100000 < tmp_data/hits_v1.tsv
Received exception from server (version 21.12.2):
Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (total) exceeded: would use 1.75 GiB (attempt to allocate chunk of 31462368 bytes), maximum: 1.74 GiB. (MEMORY_LIMIT_EXCEEDED)
(query: INSERT INTO tutorial.hits_v1 FORMAT TSV)
SELECT
StartURL AS URL,
AVG(Duration) AS AvgDuration
FROMtutorial.visits_v1WHERE StartDate BETWEEN '2014-03-23'AND'2014-03-30'GROUP BY URL
ORDER BY AvgDuration DESCLIMIT10
查询结果:
示例查询二:
SELECTsum(Sign) AS visits,
sumIf(Sign, has(Goals.ID, 1105530)) AS goal_visits,
(100. * goal_visits) / visits AS goal_percent
FROMtutorial.visits_v1WHERE (CounterID =912887) AND (toYYYYMM(StartDate) =201403) AND (domain(StartURL) ='yandex.ru')
ClickHouse 安装及数据导入
以下是 ClickHouse 的安装及数据导入过程,可帮助你快速搭建环境及上手查询,适用于教学。内容主要来自官方文档中 ClickHouse Tutorial 部分。
安装
根据官方文档 How to Build ClickHouse on Mac OS X 可在 Mac OS 上通过编译安装,但平时开发和教学直接使用 Docker 环境即可,方便快捷问题少。
根据这个 Github Issue 中的步骤使用 Docker 进行安装:
docker run -d --name clickhouse-local -p 8123:8123 -p 9000:9000 --ulimit nofile=262144:262144 yandex/clickhouse-server
。sudo docker exec -it clickhouse-local bash
。clickhouse-client
进行交互了,比如查看版本clickhouse-client -V
。CREATE DATABASE myfirstdatabase
。jdbc:clickhouse://<USER>:<PASSWORD>@[localhost](http://localhost):8123/<DATABASE>
。通过上述步骤部署到本机的话 host 直接写localhost
即可。注意:如果安装后发现启动失败,报 9000 端口被占用,可通过
kill -9 $(lsof -ti:9000)
关闭掉占用程序后重试。导入示例数据库
通过文档可查看更加全面的导入数据的方式,这里展示的只是其中最常用的一种。
下载示例数据
下载如下示例数据:
两个文件解压后 ~10G 。
创建数据库
注意:如下及后续 SQL 语句,都可通过
clickhouse-client
命令行或其他客户端工具比如 DBeaver 来完成。同其它数据库一样,数据以数据库为单位进行区分,通过如下命令创建将要用到的示例数据库:
建表
接下来开始建表,建表语句主要包含如下三方面信息:
创建两张表,其中:
hits
记录用户在站点的点击行为visits
为一些预计的用户访问数据创建 hits 表
创建 visits 表
数据导入
通过 INSERT INTO 语句进行数据导入操作,所支持的完整格式列表可参见文档 supported serialization formats。
前面下载的数据为 tab 分隔的数据,使用如下语句进行导入:
但问题来了,如果是本地原生的 ClickHouse 是可以像上在这样操作的,但如果是通过 docker 启的,执行
clickhouse-client
是在 docker 环境里,里面并没有我们将要导入的数据文件*.tsv
。此时有两个方法,一是通过客户端软件比如 DBeaver 进行导入,无奈其文件选项没有 tsv 格式:
二是将 tsv 文件复制到容器中,假设已经在容器中创建了一个临时目录
tmp_data
来保存,当然不是必需的,复制到根目录,也可以。通过如下命令来完成复制:注意:by the way, 通过
docker container ls
查看容器对应的 id。此时就可以进行导入操作了。因为文件比较大,如果报如下错误,一定会报的:
# clickhouse-client --query "INSERT INTO tutorial.hits_v1 FORMAT TSV" --max_insert_block_size=100000 < tmp_data/hits_v1.tsv Received exception from server (version 21.12.2): Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (total) exceeded: would use 1.75 GiB (attempt to allocate chunk of 31462368 bytes), maximum: 1.74 GiB. (MEMORY_LIMIT_EXCEEDED) (query: INSERT INTO tutorial.hits_v1 FORMAT TSV)
根据这个这个 Github Issue 中的解决,创建自定义配置文件 config.xml 设置如下配置即可:
首先创建配置文件,直接从镜像中将默认的配置复制出来:
上面 container_id 为本地运行后的 ID。打开复制出来的配置文件修改
max_server_memory_usage_to_ram_ratio
为 100。同时根据 Docker Hub 中 ClickHouse 镜像的文档描述中得知,启动镜像时增加指定配置的参数,即通过如下命令启动,注意此时可能需要将原来的容器删除重新启动,因为之前的名称已经被占用。
注意上面
-v
后面跟的配置文件路径需要是绝对路径。重启后再重试前述导入操作,不出意外应该会成功了。
导入成功后已经能查看到数据:
查询数据
完成上述步骤后,我们有了数据库及数据,就可以尝试查询来体验 ClickHouse 了。
示例查询一:
查询结果:
示例查询二:
查询结果:
以上。
相关资源
The text was updated successfully, but these errors were encountered: