使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据

Posted

技术标签:

【中文标题】使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据【英文标题】:Query parquet data from Azure Data Lake using C# from an Azure Web API App 【发布时间】:2021-01-24 16:26:11 【问题描述】:

解决方案背景:我们有设备每隔一分钟将遥测数据发送到事件中心,并在其中存储为 AVRO 文件。对于冷路径,我们计划将数据(存储 3 年数据所需的总存储空间为 80 TB)存储到 Azure Data Lake Gen2。我们需要从这个数据存储中查询数据集,从我们的 Web API 运行带有过滤器、时间跨度等的查询,这些查询将数据提供给 Azure 中的 Angular Web 应用程序。

当数据以 JSON 格式存储在 Azure Data Lake 中时,我们可以使用 C# 和 SQL 语法在我们的 Web API 项目中使用 Azure Data Lake 的query acceleration 功能查询数据。但是,为了最小化存储大小并获得更好的查询性能,建议在将数据存储到 Azure Data Lake 时使用 Parquet 文件格式。

Q1:挑战在于,相同的 .NET SDK (Azure.Storage.Files.DataLake) 在查询数据时不支持 Parquet 文件格式,还是支持?

我还检查了“.NET for Apache Spark”在 .NET 中的大数据处理,但它运行需要安装 JRE 和其他组件,我能找到的唯一示例是控制台应用程序。不是将在 Azure 中部署的 Web API。

Q2:有人对此有任何想法吗?

Q3:有点主观,但有没有其他方法可以在 Azure Data Lake 的 .NET Web API 中使用熟悉的 SQL 来存储和获取大数据?

【问题讨论】:

【参考方案1】:

您可以将Parquet.NET 作为在 .NET 中查询 Parquet 文件的一个选项。

您还可以评估 Query Acceleration 或 Azure Data Explorer 或 Synapse Analytics on-demand SQL (example syntax)。

【讨论】:

探索了所有这些并没有帮助,因为我们需要从 WebAPI C# 项目中查询数据。查询加速正在工作,但似乎有一个限制,即不支持对 Parquet 文件的查询。 @SBirthare Parquet.NET 应该可以工作。对于 Synapse 和 Azure 数据资源管理器,您是说 Web API 无法打开与其他服务的连接以作为查询 parquet 文件的一种方式? 我会再试一次,但是由于知识和经验有限,我正在寻找一个我没有找到的例子。 一旦我们使用流分析作为 Parquet 格式将数据从 Event Hub 存储到 DataLake 中,我们就能够使用 Synapse Analytics SQL-on-demand 功能。 ODBC 驱动支持允许我们打开一个 SQL 连接,就像我们查询数据 SQL Server 数据库一样。【参考方案2】:

https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/query-parquet-files

这给出了如何使用 SQL 查询 parquet 文件。

【讨论】:

最好将其作为对问题的评论,而不是答案。

以上是关于使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据

用于使用 Azure SQL Server 数据的 C# Web API

如何从同一 Azure AD 中的另一个 Web 应用程序访问 Web api?

通过 GCP、AWS 和 Azure 中的 API 探索 Web 资源

Azure AD B2C 与 ASP.NET Web API 发出令牌,用于 Web API 中的身份验证和访问 MS Graph API

Azure - 安全 API 应用程序,因此只有逻辑应用程序和 Web 应用程序可以访问