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 Serverless 中的数据。
航班RPC客户端 可以使用SQL或InfluxQL查询存储在InfluxDB Cloud Serverless存储桶中的数据。使用InfluxDB 3的针对IOx的Flight RPC协议,客户端发送单个 DoGet() 请求进行身份验证、查询和检索数据。
Flight SQL 客户端 使用 Flight SQL 协议 来查询 SQL 数据库服务器。 它们可以使用 SQL 查询存储在 InfluxDB Cloud Serverless 存储桶中的数据,但不能使用 InfuxQL。
客户端由Apache Arrow项目或第三方维护。 关于Flight客户端的具体信息,请参阅客户端的GitHub存储库。
C# .NET 飞行客户端
C# .NET Flight 客户端与 C# .NET 脚本和应用程序集成,以查询存储在 InfluxDB 中的数据。
前往箭头航班客户端
Go Arrow 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": "BUCKET_NAME",
"sql_query": sql,
"query_type": "sql"
}))
token = (b"authorization", bytes(f"Bearer API_TOKEN".encode('utf-8')))
options = FlightCallOptions(headers=[token])
client = FlightClient(f"grpc+tls://cloud2.influxdata.com:443")
reader = client.do_get(flight_ticket, options)
arrow_table = reader.read_all()
Python 航班 SQL DBAPI 客户端
Python flightsql-dbapi 库使用 SQL 和 Flight SQL 协议查询存储在 InfluxDB Cloud Serverless 桶中的数据。