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

标签 c# apache-spark azure-hdinsight livy spark-dotnet

根据标题,我想向 Spark 集群(Azure 中的本地/HDInsight)请求计算,并从 C# 应用程序获取结果。

我承认 Livy 的存在,据我所知,这是一个位于 Spark 之上的 REST API 应用程序,用于查询它,但我还没有找到一个标准的 C# API 包。这是适合这项工作的工具吗?它是否只是缺少一个众所周知的 C# API

Spark 集群需要访问 Azure Cosmos DB,因此我需要能够提交包含连接器 jar 库(或其在集群驱动程序上的路径)的作业) 以便 SparkCosmos 读取数据。

最佳答案

作为查询数据的.NET Spark连接器似乎不存在我写了一个

https://github.com/UnoSD/SparkSharp

这只是一个快速实现,但它也有一种使用 Spark SQL 查询 Cosmos DB 的方法

它只是 LivyC# 客户端,但它应该绰绰有余。

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/

相关文章:

c# - 为从数据库中填充的下拉列表设置默认值

c# - 使用 C# 获取 XML 文档的属性值

scala - Apache Spark 内连接 2 个数据帧出现 TreeNodeException

powershell - 通过 PowerShell 启用对 HDInsight 群集的 RDP 访问

c# - 窗体 : avoid freeze application

c# - 如何在 C# 中有效地处理许多更新对象?

python - 分解多行中具有密集向量的列

amazon-web-services - 如何在不同的目录而不是 hive_metastore 中发布增量实时表(DLT)

hadoop - 如何设置Pig STORE命令的输出目录?

mysql - 带有外部 mysql 的 hive Metastore 不起作用