允许在指定集群中的多个节点上并行处理来自 URL 的文件。在发起节点上,它会与集群中的所有节点建立连接,展开 URL 文件路径中的星号,并动态分发各个文件。在工作节点上,它会向发起节点请求下一个要处理的任务并进行处理。如此反复,直到所有任务完成。
语法
urlCluster(cluster_name, URL, format, structure)参数
| 参数 | 描述 |
|---|---|
cluster_name |
集群名称,用于构建远程和本地服务器的地址集合及其连接参数。 |
URL |
可接受 GET 请求的 HTTP 或 HTTPS 服务器地址。类型:String。 |
format |
数据的格式。类型:String。 |
structure |
'UserID UInt64, Name String' 格式的表结构,用于确定列名和类型。类型:String。 |
返回值
一个采用指定格式和结构、包含已定义 URL 中数据的表。
示例
获取一个包含 String 和 UInt32 类型列的表的前 3 行数据,该表来自一个以 CSV 格式响应的 HTTP 服务器。
- 使用 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 设置限制。