根据标题,我想向 Spark 集群(Azure 中的本地/HDInsight)请求计算,并从 C# 应用程序获取结果。
我承认 Livy 的存在,据我所知,这是一个位于 Spark 之上的 REST API 应用程序,用于查询它,但我还没有找到一个标准的 C# API 包。这是适合这项工作的工具吗?它是否只是缺少一个众所周知的 C# API?
Spark 集群需要访问 Azure Cosmos DB,因此我需要能够提交包含连接器 jar 库(或其在集群驱动程序上的路径)的作业) 以便 Spark 从 Cosmos 读取数据。
最佳答案
作为查询数据的.NET Spark连接器似乎不存在我写了一个
https://github.com/UnoSD/SparkSharp
这只是一个快速实现,但它也有一种使用 Spark SQL 查询 Cosmos DB 的方法
它只是 Livy 的 C# 客户端,但它应该绰绰有余。
using (var client = new HdInsightClient("clusterName", "admin", "password"))
using (var session = await client.CreateSessionAsync(config))
{
var sum = await session.ExecuteStatementAsync<int>("val res = 1 + 1\nprintln(res)");
const string sql = "SELECT id, SUM(json.total) AS total FROM cosmos GROUP BY id";
var cosmos = await session.ExecuteCosmosDbSparkSqlQueryAsync<IEnumerable<Result>>
(
"cosmosName",
"cosmosKey",
"cosmosDatabase",
"cosmosCollection",
"cosmosPreferredRegions",
sql
);
}
关于c# - 从 C# 提交 Spark 作业并获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848069/