Apache Arrow Flight RPC 客户端
Flight RPC和Flight SQL客户端是与数据库交互的特定语言驱动程序,使用Arrow内存格式和Flight RPC协议。Apache Arrow Flight RPC和Flight SQL协议定义了服务器和客户端的API。
使用 InfluxDB 3 客户端库
我们推荐使用 InfluxDB 3 客户端库 将 InfluxDB 3 与您的应用程序代码集成。客户端库包装了 Apache Arrow Flight 客户端,并提供了方便的方法来 写入、查询 和处理存储在 InfluxDB Cloud Dedicated 中的数据。
Flight RPC 客户端 可以使用 SQL 或 InfluxQL 来查询存储在 InfluxDB Cloud Dedicated 数据库中的数据。使用 InfluxDB 3 的 IOx 特定 Flight RPC 协议,客户端发送一个 DoGet() 请求来进行身份验证、查询和检索数据。
Flight SQL 客户端 使用 Flight SQL 协议 查询 SQL 数据库服务器。 它们可以使用 SQL 查询存储在 InfluxDB Cloud Dedicated 数据库中的数据,但不能使用 InfuxQL。
客户端由Apache Arrow项目或第三方维护。 关于Flight客户端的具体信息,请参阅客户端的GitHub存储库。
C# .NET 飞行客户端
C# .NET Flight 客户端与 C# .NET 脚本和应用程序集成,以查询存储在 InfluxDB 中的数据。
飞行客户端
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 航空客户端
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-id.a.influxdb.io:443")
reader = client.do_get(flight_ticket, options)
arrow_table = reader.read_all()
Python 航班 SQL DBAPI 客户端
The Python flightsql-dbapi 库使用 SQL 和 Flight SQL 协议查询存储在 InfluxDB Cloud Dedicated 数据库中的数据。