来自 C# 客户端的 Apache Arrow 飞行 SQL

Apache Arrow flight SQL from C# client

提问人:MKG 提问时间:11/6/2022 更新时间:2/17/2023 访问量:510

问:

我正在尝试开发一个 c# 客户端代码,以使用基本身份验证使用 Apache Arrow Flight 查询数据,但到目前为止还没有成功。

如果有人可以分享工作样本,我将不胜感激。

谢谢 马诺伊·乔治

pyarrow apache-arrow dremio

评论


答:

0赞 Getit 2/17/2023 #1

这里有示例代码:

https://github.com/apache/arrow/blob/master/csharp/examples/FlightClientExample/Program.cs

但是,要让它在 Dremio 中工作,您需要添加身份验证。以下是如何在 localhost 测试环境中对“HTTP”(而不是 https)使用基本身份验证的示例。Flight 侦听端口 32010。我在示例中硬编码了用户名“mydremiouser”和密码“mydremiopassword”。

// ...
            string host = args.Length > 0 ? args[0] : "localhost";
            string port = args.Length > 1 ? args[1] : "32010";
            string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("mydremiouser" + ":" + "mydremiopassword"));
            
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Authorization", "Basic " + encoded);

            var address = $"http://{host}:{port}";
            var channel = GrpcChannel.ForAddress(address, new GrpcChannelOptions
            {
                HttpClient = httpClient
            });

            FlightClient client = new FlightClient(channel);
// ...