ClickHouse UDF 官方示例Example报错解决方案

news/2025/3/14 22:53:47/

目录

  • 一、环境版本
  • 二、官方示例
  • 三、解决方案
    • 1.Python脚本运行缺少权限
    • 2. 缺少Python3运行环境
  • 四、参考借鉴

一、环境版本

环境版本
docker clickhouse22.3.10.22
docker pull clickhouse/clickhouse-server:22.3.10.22

二、官方示例

官网文档

test_function使用 XML 配置创建。文件test_function.xml/etc/clickhouse-server/test_function.xml使用默认路径设置)。

<functions><function><type>executable</type><name>test_function_python</name><return_type>String</return_type><argument><type>UInt64</type><name>value</name></argument><format>TabSeparated</format><command>test_function.py</command></function>
</functions>

user_scripts文件夹内的脚本文件test_function.py/var/lib/clickhouse/user_scripts/test_function.py使用默认路径设置)。

#!/usr/bin/python3import sysif __name__ == '__main__':for line in sys.stdin:print("Value " + line, end='')sys.stdout.flush()

询问:

SELECT test_function_python(toUInt64(2));

报错:

Code: 75. DB::ErrnoException: Cannot write into pipe , errno: 32, strerror: Broken pipe: While executing TabSeparatedRowOutputFormat: While processing test_function_python(toUInt64(2)). (CANNOT_WRITE_TO_FILE_DESCRIPTOR) (version 22.3.10.22 (official build)) , server ClickHouseNode [uri=http://localhost:8123/default, options={custom_http_params=session_id=DataGrip_3dcf30c1-e0d2-4f93-8c21-7fc99420db96}]@-1444910710

执行:

SYSTEM RELOAD FUNCTIONS;
SELECT * FROM system.functions WHERE name = 'test_function_python';

发现函数已添加,却依旧运行报错

三、解决方案

1.Python脚本运行缺少权限

chmod a+x /var/lib/clickhouse/user_scripts/test_function.py

2. 缺少Python3运行环境

官方镜像中缺少Python3运行环境,需单独安装

apt update
apt install python3

四、参考借鉴

Github Issues


http://www.ppmy.cn/news/1180313.html

相关文章

[SQL开发笔记]SQL 别名:为表名称或列名称指定别名

一、功能描述&#xff1a; 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。基本上&#xff0c;创建别名是为了让列名称的可读性更强。 二、SQL 别名语法详解&#xff1a; &#xff08;1&#xff09;列的 SQL 别名语法&#xff1a; Select column_name AS alias_nam…

MySQL日志类的数据表,实测MyISAM到底比InnoDB查询快多少

目录 简单介绍下两种引擎 开始实测 从数据占用的容量对比看MyISAM占用空间更小 从查询效率对比看MyISAM也确实更快 MYISAM表结构 Laravel的建表语句 Laravel定时任务-清理日志&#xff0c;只保留最新300万条记录 简单介绍下两种引擎 InnoDB支持事务功能、外键、行级锁等一…

uniapp vue2、vue3 页面模板代码块设置

本文分享 uniapp vue2、vue3 页面模板代码块设置 设置路径 HBuilder X -> 工具 -> 代码块设置 -> vue代码块 -> 自定义代码块 如上图操作后在打开的 vue.json 文件的右侧“自定义代码块”中复制如下代码&#xff08;可全选替换也可添加到代码中&#xff09; 示…

使用香橙派并基于Linux实现最终版智能垃圾桶项目 --- 下

最终完成效果视频&#xff1a; 使用香橙派并基于Linux实现最终版带图像识别的可回收垃圾桶 — 下_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1bc411o7zS/?spm_id_from333.999.0.0&vd_source16380169fa415d2d056dd877a8d8c1b7 硬件接线 & 最终实现图 目录 …

折磨的Ts

先看下官网 这里的withDefault是给props设置默认值的 由于props传入了个函数在设置默认值的时候不知道怎么设置了 解决办法&#xff1a;直接不设置了。也不写了。

Redis进军磁盘存储

目录 1、对抗价格优势&#xff1a;纳入磁盘&#xff0c;降低成本&#xff1f; 2、Redis的野心&#xff1a;无敌是多么寂寞&#xff0c;所以我们要开新地图 3、开发者异议&#xff1a;他们正在偏离我们选择Redis的初衷 4、结语&#xff1a;性能为王&#xff0c;但绝不甘于只…

【广州华锐互动】VR公司工厂消防逃生演练带来沉浸式的互动体验

在工业生产过程中&#xff0c;安全问题始终是我们不能忽视的重要环节。特别是火灾事故&#xff0c;不仅会造成重大的经济损失&#xff0c;更会威胁到员工的生命安全。传统的消防安全训练方法&#xff0c;如讲座、实地演练等&#xff0c;虽然具有一定的效果&#xff0c;但是无法…

lunar-1.5.jar

公历农历转换包 https://mvnrepository.com/artifact/com.github.heqiao2010/lunar <!-- https://mvnrepository.com/artifact/com.github.heqiao2010/lunar --> <dependency> <groupId>com.github.heqiao2010</groupId> <artifactId>l…