标签: clickhouse

Clickhouse数据导入

我在Clickhouse中创建了一个表:

CREATE TABLE stock
(
    plant Int32,
    code Int32,
    service_level Float32,
    qty Int32
) ENGINE = Log
Run Code Online (Sandbox Code Playgroud)

有一个数据文件

:~$ head -n 10 /var/rs_mail/IN/qv_stock_20160620035119.csv
2010,646,1.00,13
2010,2486,1.00,19
2010,8178,1.00,10
2010,15707,1.00,4
2010,15708,1.00,10
2010,15718,1.00,4
2010,16951,1.00,8
2010,17615,1.00,13
2010,17616,1.00,4
2010,17617,1.00,8
Run Code Online (Sandbox Code Playgroud)

我正在尝试加载数据:

:~$ cat /var/rs_mail/IN/qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";
Run Code Online (Sandbox Code Playgroud)

我得到一个错误

\n2010: 7615,1.00,13ion: Cannot parse input: expected , before: 2010,646,1.00,13

Row 1:
Column 0,   name: plant,         type: Int32,   ERROR: text "2010,64" is not like Int32

: (at row 1)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

文件: https: //yadi.sk/d/ijJlmnBjsjBVc

database clickhouse

6
推荐指数
1
解决办法
4万
查看次数

来自服务器 localhost:9000, ::1 的意外数据包

我已经按照此处的说明安装了 clickhouse https://github.com/Altinity/clickhouse-rpm-install

我还在 /etc/clickhouse-server/config.xml 中启用了::。

一开始很好,如下所示:

sudo /etc/init.d/clickhouse-server restart 启动 clickhouse-server 服务: /etc/clickhouse-server/config.xml 中数据目录的路径: /var/lib/clickhouse/ DONE

但是,当我启动客户端时,它失败如下:

sudo clickhouse-client ClickHouse 客户端版本 1.1.54383。连接到本地主机:9000。代码:102. DB::NetException:来自服务器 localhost:9000, ::1 的意外数据包(预期的 Hello 或异常,收到未知数​​据包)

clickhouse

6
推荐指数
1
解决办法
1万
查看次数

了解 clickhouse 分区

我看到 clickhouse 为每个分区键(在每个节点中)创建了多个目录。文档说目录名称格式是:分区 ID_minimum block number_maximum block number_level。知道这里是什么水平吗?一个节点上的 347 个不同的分区键(对于一张表)创建了 1358 个目录。(自定义分区)

文档建议不要有超过 1000 个分区。我们应该记住分区键的数量还是目录的数量?

另外,是否有关于如何控制这个目录数量的配置?

在此处输入图片说明

clickhouse

6
推荐指数
1
解决办法
6641
查看次数

仅选择具有最大日期的行

在 clickhouse 表中,我有多个行_id。我想要的是为每个_id_status_set_at有最大值的地方只得到一行。这就是我目前的状态:

SELECT _id, max(_status_set_at), count(_id)
FROM pikta.candidates_states
GROUP BY _id
Run Code Online (Sandbox Code Playgroud)

输出

因为我不能使用max()函数 atWHERE子句,如何解决这个问题? count(_id)显示每个有多少行_id,如果查询正确,它应该显示 1。另外,就我而言,ONClickhouse 数据库中没有子句。

UPD:ONClickhouse 中有条款

sql database clickhouse

6
推荐指数
1
解决办法
3765
查看次数

从 docker-compose 文件在 dockerized Clickhouse 实例中创建数据库和表

我的要求是当我使用 docker-compose 启动 Clickhouse 时在其中创建数据库和表。如果是mysql,我这样做:

mysql_1:
      image: mysql:5.7.16
      environment:
        MYSQL_DATABASE: "one"
        MYSQL_USER: "one_user"
        MYSQL_PASSWORD: "one_user_pass"
        MYSQL_ROOT_PASSWORD: "root"
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      volumes:
       - ./data/one:/docker-entrypoint-initdb.d
      ports:
        - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

有什么方法可以为 Clickhouse 实例实现相同的效果吗?

yandex docker docker-compose clickhouse

6
推荐指数
2
解决办法
1万
查看次数

返回 clickhouse 数组作为列

Clickhouse 是否可以将包含一对数组的结果转换为列?

\n\n

形成这个结果:

\n\n
\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacf2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacf3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \'a\' \xe2\x94\x82 [1,2,3] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x82 \'b\' \xe2\x94\x82 [4,5,6] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n

到 :

\n\n
\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacx\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacy\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacz\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \'a\' \xe2\x94\x82 1 \xe2\x94\x82 2 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 \'b\' \xe2\x94\x82 4 \xe2\x94\x82 5 \xe2\x94\x82 6 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n

这个想法是不必为每行重复标题值。

\n\n

就我而言,“标头”数组 f3 通过查询唯一并连接到 f1、f2。

\n

sql clickhouse

6
推荐指数
1
解决办法
1万
查看次数

Pandas:如何将数据框插入 Clickhouse

我正在尝试将 Pandas 数据框插入 Clickhouse。

这是我的代码

import pandas
import sqlalchemy as sa

uri = 'clickhouse://default:@localhost/default'
ch_db = sa.create_engine(uri)

pdf = pandas.DataFrame.from_records([
    {'year': 1994, 'first_name': 'Vova'},
    {'year': 1995, 'first_name': 'Anja'},
    {'year': 1996, 'first_name': 'Vasja'},
    {'year': 1997, 'first_name': 'Petja'},
])

pdf.to_sql('test_humans', ch_db, if_exists='append', index=False)
Run Code Online (Sandbox Code Playgroud)

这就是我收到的错误。这是否与缺少有关引擎的额外参数有关?我怎样才能解决这个问题?

异常:代码:62,e.displayText() = DB::Exception:语法错误:在位置 65 处失败(第 7 行,第 2 列):FORMAT TabSeparatedWithNamesAndTypes。预期之一:引擎,存储定义(版本 19.15.2.2(官方版本))

记录

信息:sqlalchemy.engine.base.Engine:存在表 test_ humans 信息:sqlalchemy.engine.base.Engine:{} 信息:sqlalchemy.engine.base.Engine:创建表 test_ humans (名字 TEXT,年份 BIGINT )

信息:sqlalchemy.engine.base.Engine:{} 信息:sqlalchemy.engine.base.Engine:ROLLBACK

python pandas clickhouse

6
推荐指数
2
解决办法
3万
查看次数

如何在clickhouse中设置像current_timestamp这样的列默认值?

有谁知道在创建 clickhouse 表时如何使用 mysql 中的 current_timestamp 这样的默认值?now() udf是动态的,而不是插入行的时间,它始终是当前时间,当select时它会改变。

这是我的桌子:

CREATE TABLE default.test2 (   
`num` UInt32,   
`dt` String,  
`__inserted_time` DateTime DEFAULT now()  
)  
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test2', '{replica}')  
PARTITION BY dt  
ORDER BY dt  
SETTINGS index_granularity = 8192
Run Code Online (Sandbox Code Playgroud)

我希望自动生成 __inserted_time 列值,因此我不必在insert into test2 (num,dt) values (1,'20191010')


我的错误,DEFAULT now() 实际上有效

clickhouse

6
推荐指数
0
解决办法
1万
查看次数

Clickhouse:DB::Exception:超出内存限制(用于查询)

当 Clickhouse 查询内存不足时,我该怎么办?你不能只是调高内存,对吧?内存也有限制,硬盘怎么配置?

SELECT
    UserID,
    Title
FROM 
(
    SELECT
        L.UserID,
        L.Title
    FROM tutorial.hits_v1 AS L
    INNER JOIN tutorial.hits_v2 AS R ON L.UserID = R.UserID
) AS T
ORDER BY UserID ASC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
#user.d/abc.xml


<?xml version="1.0"?>
<yandex>
    <!-- Profiles of settings. -->
    <profiles>
        <!-- Default settings. -->
        <default>
            <!-- Maximum memory usage for processing single query, in bytes. -->
            <max_memory_usage>350000000</max_memory_usage>
            <max_memory_usage_for_user>350000000</max_memory_usage_for_user>
            <max_bytes_before_external_group_by>100000000</max_bytes_before_external_group_by>
            <max_bytes_before_external_sort>100000000</max_bytes_before_external_sort>
        </default>
    </profiles>
</yandex>

Run Code Online (Sandbox Code Playgroud)

clickhouse

6
推荐指数
2
解决办法
2万
查看次数

有没有更好的方法来跨 clickhouse 集群查询系统表?

我们有一个中等规模的 clickhouse 集群,大约有 30 个节点,并且想要收集其使用情​​况统计数据。我们希望使用针对系统表的计划查询来做到这一点,但使用普通查询只能获取您恰好连接到的一个节点的信息,并且创建分布式表仅适用于 *log 系统表。我们可以循环节点,但不想这样做。有没有一种方法可以在一个查询中获取系统表的所有实例,例如 system.parts?

clickhouse

6
推荐指数
1
解决办法
2223
查看次数

标签 统计

clickhouse ×10

database ×2

sql ×2

docker ×1

docker-compose ×1

pandas ×1

python ×1

yandex ×1