问题标签 [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.
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 的计算要快得多。为什么?
intake - 仅保留数据源的一部分
我正在使用入口来访问目录catalog.ocean.GFDL_CM2_6.GFDL_CM2_6_control_ocean_surface。目前我只处理这些数据的一小部分,但每次访问这些数据仍然非常昂贵(它在谷歌云存储上)。所以我想使用摄入的持久选项在本地存储该数据。然而,据我从文档中了解到,看起来一个人只能持久化整个数据集。对于那个特定的数据集,如果我以每 GB 0.1 美元的成本计算,那将达到近 400 美元,因为总数据是 3976GB。
因此我的问题是:
- 有没有办法(特别是对于理论上应该使这很容易的 zarr 文件)仅保留部分数据(例如仅保留变量的子集)
- 这可能更复杂,但我可以通过持久化我感兴趣的数据区域(例如坐标值)来进一步推动事情吗?
azure - 将数据从数据库移动到 Azure Blob 存储
我可以使用dask.dataframe.read_sql_table来读取数据,例如df = dd.read_sql_table(table='TABLE', uri=uri, index_col='field', npartitions=N)
将其保存为 Azure Blob 存储中的镶木地板文件的下一个(最佳)步骤是什么?
根据我的小型研究,有两种选择:
- 在本地保存并使用https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-blobs?toc=/azure/storage/blobs/toc.json(不适合大数据)
- 我相信adfs是从 blob 中读取
- 使用dask.dataframe.to_parquet并找出如何指向 blob 容器
- 摄入项目(不知道从哪里开始)
intake - 摄入缓存指定文件名/位置
我正在尝试使用intake
和intake-xarray
打开和存储远程文件。我在这里有一个最小化的目录文件:
/isibhv/projects/paleo_pool/boundary_conditions/ice_sheet_reconstructions/ice_sheet_reconstructions.yaml
它看起来像这样:
我可以在 Python 中打开文件:
这一切都非常有效;我得到了我期望的文件。但是,缓存没有显示在我期望的位置。我猜想在下面创建了一个新文件夹:
相反,我在我的主目录中得到了一些东西。
我是否错误地指定了缓存目录?
作为第二个问题:是否可以直接指定缓存文件在保存时应如何调用?
谢谢!保罗
intake - GCP BigQuery 上的数据源
我试图寻找任何可以支持 GCP BigQuery 的现有摄入组件,例如 Driver、Plugin。鉴于如果不能支持,请告知如何实现intake.source.base.DataSource的子类化
intake - 数据持久化到原始数据源
任何人都可以告诉我以下用例是否有意义并且适用于摄入软件组件。
我们喜欢使用 Intake 构建抽象层或 API 服务端点来封装典型的数据操作,例如数据检索和数据持久化回原始数据系统。简而言之,从数据库系统构建 read() 和 save(),例如 GCP BigQuery。
intake - 如何始终对进气进行必要的预处理/清洁?
我有一个用例:
在能够使用数据之前,我总是需要对数据应用预处理步骤。(因为命名等不遵循某些软件在处理链下游强制执行的社区约定。)
我无法更改原始数据。(因为它可能在我无法控制的回购中,或者因为它太大而无法复制,......)
如果我的目标是为用户提供以预处理方式获取数据的最简单、最透明的方式,我可以看到两种方式:
1. 加载未处理的数据并立即应用预处理:
2. 对调用应用预处理步骤.read()
。
目录:
和:
nginx - 摄入客户端和摄入服务器之间启用 TLS 的通信
在摄入官方文档中,它提到
授权插件是可用于自定义对 Intake 目录服务器的访问权限的类。Intake 服务器和客户端通过 HTTP 进行通信,因此当考虑安全性时,最重要的步骤是在 Intake 服务器前面放置一个启用 TLS 的反向代理(如 nginx),以加密所有通信。
你能建议任何关于如何在入口服务器前实现 nginx 的例子吗?需要什么样的 nginx 设置。
intake - yaml 文件中的数据集视图和访问控制
我是新来的,我正在尝试了解如何控制目录条目的可见性和访问权限。例如,我想了解以下情况下目录 yaml 文件的外观,假设我有两个 csv 文件,我通过目录 yaml 文件与两个用户一起提供对它们的访问权限。如何让一个用户只看到一个 csv,而另一个用户可以看到这两个文件?或者我需要如何更改下面的 yml 文件来完成此操作?
intake - 如何添加自定义方法以不仅在插件中以 dask 格式返回数据源,而且还以几种不同的自定义格式返回数据源?
我正在开发一个允许从 Github 读取特定 JSON 文件的摄入插件。这些 JSON 文件包含有关我们要使用不同模拟软件模拟的系统的基本信息,每个软件都有自己的输入格式。我们有从 JSON 到每种可用格式的转换器。我现在想在我的插件中添加一个类似于“to_dask”方法的方法“to_format”,但我不断收到“RemoteSequenceSource 对象没有属性“to_format”。有没有办法做到这一点?