Apache Arrow Flight RPC 客户端
Flight RPC 和 Flight SQL 客户端是特定语言的驱动程序,它们通过使用 Apache Arrow 内存格式和 Flight RPC 协议与数据库交互。Apache Arrow Flight RPC 和 Flight SQL 协议为服务器和客户端定义了 API。
使用 InfluxDB v3 客户端库
我们建议使用 InfluxDB v3 客户端库 将 InfluxDB v3 与您的应用程序代码集成。客户端库封装 Apache Arrow Flight 客户端,并提供方便的方法来 写入、查询 和处理存储在 InfluxDB Clustered 中的数据。
Flight RPC 客户端 可以使用 SQL 或 InfluxQL 查询存储在 InfluxDB Clustered 数据库中的数据。使用 InfluxDB v3 的 IOx 特定的 Flight RPC 协议,客户端发送单个 DoGet()
请求进行身份验证、查询和检索数据。
Flight SQL客户端使用Flight SQL协议来查询SQL数据库服务器。它们可以使用SQL查询存储在InfluxDB集群数据库中的数据,但不能使用InfuxQL。
客户端由Apache Arrow项目或第三方维护。有关Flight客户端的详细信息,请参阅客户端的GitHub仓库。
C# .NET Flight客户端
C# .NET Flight客户端与C# .NET脚本和应用程序集成,以查询存储在InfluxDB中的数据。
Go Flight客户端
Go Flight客户端与Go脚本和应用程序集成,以查询存储在InfluxDB中的数据。
Java Flight SQL包
Java Flight SQL客户端与Java应用程序集成,通过RPC和SQL查询和检索Flight数据库服务器中的数据。
public class Query {
public static void main(String[] args) {
String query = "SELECT * FROM home";
Location location = Location.forGrpcTls(HOST, 443);
CredentialCallOption auth = new CredentialCallOption(new BearerCredentialWriter(TOKEN));
BufferAllocator allocator = new RootAllocator(Long.MAX_VALUE);
FlightClientMiddleware.Factory f = info -> new FlightClientMiddleware() {
@Override
public void onBeforeSendingHeaders(CallHeaders outgoingHeaders) {
outgoingHeaders.insert(DATABASE_FIELD, DATABASE_NAME);
}
};
FlightClient client = FlightClient.builder(allocator, location)
.intercept(f)
.build();
FlightSqlClient sqlClient = new FlightSqlClient(client);
FlightInfo flightInfo = sqlClient.execute(query, auth);
}
}
Python Flight客户端
Python Flight客户端与Python脚本和应用程序集成,以查询存储在InfluxDB中的数据。
from pyarrow.flight import FlightClient, Ticket, FlightCallOptions
import json
import pandas
import tabulate
# Downsampling query groups data into 2-hour bins
sql="""
SELECT DATE_BIN(INTERVAL '2 hours',
time,
'1970-01-01T00:00:00Z') AS time,
room,
selector_max(temp, time)['value'] AS 'max temp',
selector_min(temp, time)['value'] AS 'min temp',
avg(temp) AS 'average temp'
FROM home
GROUP BY
1,
room
ORDER BY room, 1"""
flight_ticket = Ticket(json.dumps({
"namespace_name": "DATABASE_NAME",
"sql_query": sql,
"query_type": "sql"
}))
token = (b"authorization", bytes(f"Bearer DATABASE_TOKEN".encode('utf-8')))
options = FlightCallOptions(headers=[token])
client = FlightClient(f"grpc+tls://cluster-host.com:443")
reader = client.do_get(flight_ticket, options)
arrow_table = reader.read_all()
Python Flight SQL DBAPI客户端
Python的flightsql-dbapi
库使用SQL和Flight SQL协议来查询存储在InfluxDB集群数据库中的数据。
这个页面有帮助吗?
感谢您的反馈!