跳至主要内容

urlCluster 表函数

允许并行处理指定集群中多个节点上的 URL 中的文件。在发起节点上,它会创建到集群中所有节点的连接,公开 URL 文件路径中的星号,并动态分发每个文件。在工作节点上,它会询问发起节点要处理的下一个任务并进行处理。重复此过程,直到所有任务完成。

语法

urlCluster(cluster_name, URL, format, structure)

参数

  • cluster_name — 用于构建一组地址和连接参数以连接远程和本地服务器的集群名称。
  • URL — 可以接受 GET 请求的 HTTP 或 HTTPS 服务器地址。类型:字符串
  • format — 数据的格式。类型:字符串
  • structure — 以 'UserID UInt64, Name String' 格式表示的表结构。确定列名和类型。类型:字符串

返回值

一个具有指定格式和结构的表,其中包含来自定义的 URL 的数据。

示例

获取包含 StringUInt32 类型列的表的首 3 行,该表来自以CSV 格式响应的 HTTP 服务器。

  1. 使用标准 Python 3 工具创建一个基本的 HTTP 服务器并启动它
from http.server import BaseHTTPRequestHandler, HTTPServer

class CSVHTTPServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/csv')
self.end_headers()

self.wfile.write(bytes('Hello,1\nWorld,2\n', "utf-8"))

if __name__ == "__main__":
server_address = ('127.0.0.1', 12345)
HTTPServer(server_address, CSVHTTPServer).serve_forever()
SELECT * FROM urlCluster('cluster_simple','http://127.0.0.1:12345', CSV, 'column1 String, column2 UInt32')

URL 中的通配符

花括号 { } 中的模式用于生成一组分片或指定故障转移地址。支持的模式类型和示例请参见remote 函数的描述。模式内部的字符 | 用于指定故障转移地址。它们按模式中列出的顺序迭代。生成的地址数量受glob_expansion_max_elements 设置限制。

另请参阅