urlCluster 表函数
允许从指定集群中的多个节点并行处理来自 URL 的文件。在发起者上,它创建与集群中所有节点的连接,公开 URL 文件路径中的星号,并动态分派每个文件。在工作节点上,它向发起者询问要处理的下一个任务并处理它。重复此操作,直到所有任务完成。
语法
urlCluster(cluster_name, URL, format, structure)
参数
cluster_name
— 用于构建远程和本地服务器地址和连接参数集的集群名称。URL
— HTTP 或 HTTPS 服务器地址,可以接受GET
请求。类型:String。format
— 数据的格式。类型:String。structure
—'UserID UInt64, Name String'
格式的表结构。确定列名和类型。类型:String。
返回值
具有指定格式和结构以及来自定义的 URL
的数据的表。
示例
从 HTTP 服务器获取包含 String
和 UInt32 类型列的表的前 3 行,该服务器以 CSV 格式响应。
- 使用标准 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 中的 Globs
花括号 { }
中的模式用于生成一组分片或指定故障转移地址。支持的模式类型和示例请参见 remote 函数的描述。模式内的字符 |
用于指定故障转移地址。它们按照模式中列出的相同顺序迭代。生成的地址数量受 glob_expansion_max_elements 设置的限制。
参见