问题标签 [intake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1738 浏览

python - 为什么使用 dask 时使用 zarr 的性能比 parquet 好得多?

当我对 zarr 数据和 parquet 数据使用 dask 运行基本相同的计算时,基于 zarr 的计算明显更快。为什么?是不是因为我在创建镶木地板文件时做错了什么?

我已经在 jupyter 笔记本中用假数据(见下文)复制了这个问题,以说明我所看到的行为类型。我很感激任何人对为什么基于 zarr 的计算比基于镶木地板的计算快几个数量级的任何见解。

我在现实生活中使用的数据是地球科学模型数据。特定的数据参数并不重要,但可以将每个参数视为具有纬度、经度和时间维度的数组。

要生成 zarr 文件,我只需写出我的参数的多维结构及其维度。

为了生成镶木地板,我首先将 3-D 参数数组“展平”为 1-D 数组,该数组成为我数据框中的单列。然后,我添加纬度、经度和时间列,然后将数据框写为镶木地板。


此单元格包含其余代码所需的所有导入:

该单元生成虚假数据文件,总大小超过 3 GB:

我对 parquet 和 zarr 文件运行了几种不同类型的计算,但在此示例中为简单起见,我将仅在特定时间、纬度和经度中提取单个参数值。

该单元为计算构建 zarr 和 parquet 有向无环图 (DAG):

当我针对每个 DAG 的计算运行时间时,我得到的时间完全不同。基于 zarr 的子集需要不到一秒的时间。基于镶木地板的子集需要 15-30 秒。

此单元格进行基于 zarr 的计算:

基于Zarr的计算时间:

此单元格进行基于镶木地板的计算:

基于 Parquet 的计算时间:

如您所见,基于 zarr 的计算要快得多。为什么?

0 投票
1 回答
39 浏览

intake - 仅保留数据源的一部分

我正在使用入口来访问目录catalog.ocean.GFDL_CM2_6.GFDL_CM2_6_control_ocean_surface。目前我只处理这些数据的一小部分,但每次访问这些数据仍然非常昂贵(它在谷歌云存储上)。所以我想使用摄入的持久选项在本地存储该数据。然而,据我从文档中了解到,看起来一个人只能持久化整个数据集。对于那个特定的数据集,如果我以每 GB 0.1 美元的成本计算,那将达到近 400 美元,因为总数据是 3976GB。

因此我的问题是:

  1. 有没有办法(特别是对于理论上应该使这很容易的 zarr 文件)仅保留部分数据(例如仅保留变量的子集)
  2. 这可能更复杂,但我可以通过持久化我感兴趣的数据区域(例如坐标值)来进一步推动事情吗?
0 投票
1 回答
422 浏览

azure - 将数据从数据库移动到 Azure Blob 存储

我可以使用dask.dataframe.read_sql_table来读取数据,例如df = dd.read_sql_table(table='TABLE', uri=uri, index_col='field', npartitions=N)

将其保存为 Azure Blob 存储中的镶木地板文件的下一个(最佳)步骤是什么?

根据我的小型研究,有两种选择:

0 投票
1 回答
73 浏览

intake - 摄入缓存指定文件名/位置

我正在尝试使用intakeintake-xarray打开和存储远程文件。我在这里有一个最小化的目录文件:

/isibhv/projects/paleo_pool/boundary_conditions/ice_sheet_reconstructions/ice_sheet_reconstructions.yaml

它看起来像这样:

我可以在 Python 中打开文件:

这一切都非常有效;我得到了我期望的文件。但是,缓存没有显示在我期望的位置。我猜想在下面创建了一个新文件夹:

相反,我在我的主目录中得到了一些东西。

我是否错误地指定了缓存目录?

作为第二个问题:是否可以直接指定缓存文件在保存时应如何调用?

谢谢!保罗

0 投票
1 回答
33 浏览

intake - GCP BigQuery 上的数据源

我试图寻找任何可以支持 GCP BigQuery 的现有摄入组件,例如 Driver、Plugin。鉴于如果不能支持,请告知如何实现intake.source.base.DataSource的子类化

0 投票
1 回答
18 浏览

intake - 数据持久化到原始数据源

任何人都可以告诉我以下用例是否有意义并且适用于摄入软件组件。

我们喜欢使用 Intake 构建抽象层或 API 服务端点来封装典型的数据操作,例如数据检索和数据持久化回原始数据系统。简而言之,从数据库系统构建 read() 和 save(),例如 GCP BigQuery。

0 投票
1 回答
27 浏览

intake - 如何始终对进气进行必要的预处理/清洁?

我有一个用例:

  • 在能够使用数据之前,我总是需要对数据应用预处理步骤。(因为命名等不遵循某些软件在处理链下游强制执行的社区约定。)

  • 我无法更改原始数据。(因为它可能在我无法控制的回购中,或者因为它太大而无法复制,......)

如果我的目标是为用户提供以预处理方式获取数据的最简单、最透明的方式,我可以看到两种方式:

1. 加载未处理的数据并立即应用预处理:

2. 对调用应用预处理步骤.read()

目录:

和:

0 投票
1 回答
22 浏览

nginx - 摄入客户端和摄入服务器之间启用 TLS 的通信

在摄入官方文档中,它提到

授权插件是可用于自定义对 Intake 目录服务器的访问权限的类。Intake 服务器和客户端通过 HTTP 进行通信,因此当考虑安全性时,最重要的步骤是在 Intake 服务器前面放置一个启用 TLS 的反向代理(如 nginx),以加密所有通信

你能建议任何关于如何在入口服务器前实现 nginx 的例子吗?需要什么样的 nginx 设置。

0 投票
1 回答
50 浏览

intake - yaml 文件中的数据集视图和访问控制

我是新来的,我正在尝试了解如何控制目录条目的可见性和访问权限。例如,我想了解以下情况下目录 yaml 文件的外观,假设我有两个 csv 文件,我通过目录 yaml 文件与两个用户一起提供对它们的访问权限。如何让一个用户只看到一个 csv,而另一个用户可以看到这两个文件?或者我需要如何更改下面的 yml 文件来完成此操作?

0 投票
1 回答
26 浏览

intake - 如何添加自定义方法以不仅在插件中以 dask 格式返回数据源,而且还以几种不同的自定义格式返回数据源?

我正在开发一个允许从 Github 读取特定 JSON 文件的摄入插件。这些 JSON 文件包含有关我们要使用不同模拟软件模拟的系统的基本信息,每个软件都有自己的输入格式。我们有从 JSON 到每种可用格式的转换器。我现在想在我的插件中添加一个类似于“to_dask”方法的方法“to_format”,但我不断收到“RemoteSequenceSource 对象没有属性“to_format”。有没有办法做到这一点?