从C#提交Spark作业并获得结果

Ste*_*nio 6 c# hdinsight apache-spark livy .net-spark

根据标题,我想请求计算Spark集群(Azure中的local/HDInsight)并从C#应用程序返回结果.

我承认Livy的存在,我理解它是一个位于Spark之上的REST API应用程序来查询它,我还没有找到一个标准的C#API包.这是工作的正确工具吗?它只是缺少一个众所周知的C#API吗?

星火集群需要访问Azure的宇宙DB,所以我需要能够以提交包括连接器的jar库(或其上的群集驱动器路径)的一个工作,星火从读取数据宇宙.

Ste*_*nio 4

作为一个用于查询数据的.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
    );
}
Run Code Online (Sandbox Code Playgroud)