使用 C# 从 Parquet 文件中读取前 100 行

2024-01-16

我有这些巨大的镶木地板文件,存储在一个 blob 中,有超过 60 万行,我想检索前 100 个,以便我可以将它们发送到我的客户端应用程序。这是我现在用于此功能的代码:

private async Task < Table > getParquetAsTable(BlobClient blob) {
  var table = new Table();
  using(var stream = await blob.OpenReadAsync()) {
    using(var memory = new MemoryStream()) {
      await stream.CopyToAsync(memory);
      var parquetReader = new ParquetReader(memory);

      table = parquetReader.ReadAsTable();
    }
  }
  var first100 = table.Take(100);
}

然而,这个过程有点缓慢。await stream.CopyToAsync(memory);需要 20 秒并且table = parquetReader.ReadAsTable();还需要 15 秒,所以总共我必须等待 35 秒。

有没有办法限制此流并一次获取前 100 行,而不必下载所有行,并使用ReadAsTable然后只取前100个?


With 辛乔 ETL https://www.nuget.org/packages/ChoETL.Parquet/- 一个开源库,您可以按如下方式流式传输 Parquet 文件。 (在后台使用 Parquet.net。)

安装Nuget包

安装包 ChoETL.Parquet

示例代码

使用 ChoETL;

using (var r = new ChoParquetReader(@"*** Your Parquet file ***")
    .ParquetOptions(o => o.TreatByteArrayAsString = true)
    )
{
     var dt = r.Take(100).AsDataTable();
}

欲了解更多信息,请访问代码项目 https://www.codeproject.com/Articles/5270332/Cinchoo-ETL-Parquet-Reader文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 从 Parquet 文件中读取前 100 行 的相关文章

随机推荐

  • 如何调试 HTTP 502 错误?

    我有一个 Python Tornado 服务器位于 nginx 前端后面 我偶尔 但不是每次 都会收到 502 错误 我查看 nginx 访问日志 看到以下内容 127 0 0 1 02 Jun 2010 18 04 02 0400 POS
  • python中岭回归的p值

    我正在使用岭回归 ridgeCV 我已经从以下位置导入了它 从 sklearn linear model 导入 LinearRegression RidgeCV LarsCV Ridge Lasso LassoCV 如何提取 p 值 我检查
  • 我们可以从适配器调用startActivityForResult吗?

    是否可以有方法onActivityResume within adapter 称呼startActivityForResult 是的 只需在适配器的构造函数中将活动的上下文传递给适配器即可 此处存储为 mContext 在getView中
  • 仅在专门调用时运行 gradle 任务

    我有一个build gradle创建 java 文件WAR文件 该文件在 Docker 多阶段构建的一个阶段中使用 以生成我在生产 暂存等中使用的 Docker 映像 配置文件 机密位于映像之外 但在开发中 虽然大多数时候我使用普通构建来生
  • 在javascript中将小数转换为六十进制(以六十为基数)

    将十进制数 以十为基数 转换为以 0 9 A Z 和 a x 作为数字的字符串表示的六十进制 以六十为基数 的最佳方法是什么 我计划用 javascript 对其进行编码 但感谢您的帮助 使用示例 gt gt decToSex 60 10
  • RStudio read.xl工作目录错误

    大家好 我在将 xlsx 加载到 RStudio 时遇到困难 我不确定为什么 RStudio 无法看到该文件 我指定的 read excel 路径是否错误 有任何想法吗 R 的新人 Thanks Windows 10 64 位 版本 0 9
  • OpenCL 中的矩阵求逆

    我正在尝试使用 OpenCL 加速一些计算 算法的一部分包括反转矩阵 是否有任何开源库或免费可用的代码来计算用 OpenCL 或 CUDA 编写的矩阵的 lu 分解 lapack dgetrf 和 dgetri 或一般求逆 该矩阵是实数且为
  • 检索 C++ 程序中的所有函数 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我们有一个定义了函数的 C 程序 我们称之为input cpp 现在 我有另一个 C 程序retrieve cpp必须 检索 中的所有功
  • 为什么 NGEN 应该挂起并且永远不会完成特定程序集的任何原因?

    我有一个使用 Visual Studio 2008 构建的 NET 3 5 类库项目 如果我尝试 NGEN 此解决方案文件中的核心程序集 NGEN 永远不会完成 或者至少在我费心让它运行的时间内 比如过夜 不会完成 还有其他人经历过吗 如果
  • “合并”多个模型。创建“最近活动”框

    如何合并模型 以便我可以按顺序显示最后 10 个帖子 提要条目和私人消息 帖子存储在 Post 模型中并按 created at 排序 Feed 条目存储在 Planet 中并在 published at 上排序 私人消息存储在 消息 中
  • 使用 PowerShell 和 System.Data.SQLite 打开 Firefox 文件“places.sqlite”

    我想运行以下代码 dll System Reflection Assembly LoadWithPartialName System Data SQLite System Reflection Assembly LoadFrom C Pro
  • 替换 AuthenticationHandler 进行集成测试

    我有一个 web 应用程序 它使用浏览器客户端的表单身份验证以及对 odata 源的 api 访问的基本身份验证 这在生产中有效 但现在我正在努力使其可测试 我使用 WebApplicationFactory 方法 还成功实现了测试身份验证
  • vue中如何调整图片大小

    我将图像从nodejs上传到vue 并将图像放入v卡中 但图像被截断了 如何在不剪切的情况下调整图像大小 在 v img 中使用 包含 属性
  • android:我想在 WebViewb 中使用我的自定义字体

    我想在 WebViewb 中使用我的自定义字体我的 html 文件已加载到 webView 中 但仍然没有字体我的字体有 Unicode 字符我在 android 2 2 上工作 mWebView loadUrl file android
  • Laravel Blade 模板在尝试获取非对象的属性时如何返回 null 而不是 ErrorException

    我正在编写一些 Laravel Blade 模板 并且我的模型可能包含空对象 我非常想尝试获取对象属性 如果出现错误 则返回 null 所以不必这样写 if model gt child object that may be null mo
  • 如何链接相同或不同文件夹中的html页面?

    如果 html 页面位于相同或不同的文件夹中 而无需编写完整路径 如何链接到它们 在同一文件夹中 只需使用文件名 a href thefile html my link a 在父文件夹的目录中 a href thefile html my
  • python 中的迭代

    您好 我想创建一些代码来打印一个如下所示的框 代码应该使用循环来打印一行框 使用 for i in range 5 不应该使用 IF 语句来解决这个问题 只使用一个框 如下所示 我尝试使用下面的代码 但没有产生所需的输出 请帮忙 for i
  • Firebase:自动创建/更新多个子节点

    假设我有一个带有 用户 节点和 宠物 节点的项目 当用户获得宠物时 我想将宠物的密钥添加到用户的 pets 节点 并将用户 ID 添加到宠物的 owner 节点 Example users user1 pets pet1 true pet3
  • 在 Xcode 11 中将分支合并到 master 中?

    我一定在这里遗漏了一些非常简单的东西 在早期版本的 Xcode 上 我从未遇到过将分支合并到 master 中的问题 但在使用 Xcode 11 时 我在任何项目上都没有该选项 我应该如何合并到master 谢谢 这是一个令人沮丧的 Xco
  • 使用 C# 从 Parquet 文件中读取前 100 行

    我有这些巨大的镶木地板文件 存储在一个 blob 中 有超过 60 万行 我想检索前 100 个 以便我可以将它们发送到我的客户端应用程序 这是我现在用于此功能的代码 private async Task lt Table gt getPa