ByteHouse 企业版完全兼容 ClickHouse 23.3,22.3,21.8 版本,部分兼容了其他版本。
对于高于 ClickHouse 23.3 的版本,ByteHouse 不保证兼容性,主要风险为 ClickHouse 社区版在版本演进中,对配置参数、函数等的默认行为变更。
ByteHouse 支持的引擎可参考官网文档。同时 ByteHouse 也支持所有社区的引擎,可参考社区文档。
此外,ByteHouse 还基于实际场景诉求自研了三个引擎,详情可参考:HaMergeTree,HaUniqueMergeTree 和 HaKafka。
ByteHouse 支持所有社区的数据类型,可参考常用数据类型。
此外,ByteHouse 还基于实际场景诉求自研了 ByteMap 和 BitEngine 类型。
常见报错信息如下:
Event Revoke Error (Event Dump All Failed Error (failed to exec sql in clickhouse (code: 44, message: Cannot create table with column 'li' which type is 'Object('json')' because experimental Object type is not allowed. Set setting allow_experimental_object_type = 1 in order to allow it SQLSTATE: 42P10)):895673)
或者:
Code: 44, e.displayText() = DB::Exception: Cannot create table with column 'simple_data_json' which type is 'Object('json')' because experimental Object type is not allowed. Set setting allow_experimental_object_type = 1 in order to allow it SQLSTATE: 42P10 (version 21.9.1)
或者:
Cannot create table with column 'xx' which type is 'Object('json')' because experimental Object type is not allowed. Set setting allow_experimental_object_type = 1 in order to allow it
原因:
JSON 列类型当前为实验功能(experimental feature),出现该报错是因为 ByteHouse 默认不允许使用实验性 Object 类型。使用前,需要在用户参数中开启相关参数设置。
解决方法:
登录 ByteHouse 企业版管理控制台,在页面左上角选择目标集群所在的地域,单击集群管理页签,进入集群列表页面。单击目标集群所在行操作列的集群参数,单击查看用户参数。
单击 Default Profile,进入详情页面。
单击修改配置,通过 XML 设置修改参数值。
新增 allow_experimental_object_type = 1,参数示例如下:
<allow_experimental_object_type>1</allow_experimental_object_type>
修改完成后单击保存并下发,系统将对应修改集群参数。用户参数无需重启集群,修改完成后秒级即可生效。
您可通过以下两种方式在 ByteHouse 中展示 JSON 数据和使用 JSON 函数:
方法一:
使用时请将以下命令中的数据库名、表名、列名替换为您实际的数据信息。
SELECT test_json FROM default.test_user FORMAT JSONEachRow SETTINGS output_format_json_named_tuples_as_objects = 1;
方法二:
SELECT toObjectString(test_json) FROM default.test_user;