问题标签 [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 回答
108 浏览

python - 如何使用 dask 有效地聚合大量小型 csv 文件(每个 120kb 约 50k 个文件)(代码大小、调度程序+集群运行时)?

我有一个数据集,每个文件包含一个时间序列。我真的很高兴 dask 如何处理我们集群上的 ~1k 文件(在我的例子中是一个目录)。但我有大约 50 个目录。

发生的有趣的事情是,构建 dask 图似乎比实际问题消耗更多的内存和 CPU。这仅在调度程序上。以下最低限度的代码应该只创建图表,但似乎已经在调度程序上做了很多熊猫的东西:

注意:我在这里的模式使用摄入量。我也一直在使用read_csvfrom dask with include_path_column=Trueand pathas group。我设法使上述步骤更快,但随后features.compute()似乎有效地扩展了导致相同情况的图表,即调度程序在集群开始运行之前挂起。

最简单的方法是实际使用 dask 反模式并执行循环。但是我想知道,是否可以做得更好(这是出于教育目的,所以风格和简单性很重要)

有没有一种很好的方法可以在一个图形中读取许多文件,而不会使图形大小超出线性范围。

0 投票
1 回答
93 浏览

intake - 如何使用 Intake 打开 json 文件?

我正在尝试使用intake为 JSON 文件创建数据目录。 #197json.loads提到“基本上,如果您的每个文件都是一个评估为对象列表的 JSON 块,则您需要提供阅读器功能。”

我创建了一个test.json

并且(使用 Intake复制数据工程)尝试

将输出保存到source.yaml

并尝试打开它

这产生了:

我不知道如何解决这个问题,非常感谢任何提示!

0 投票
1 回答
335 浏览

python - 在 Dask 中使用 read_csv 进行列名移位

我正在尝试使用Intake对 csv 数据集进行编目。它使用 Dask 实现,read_csv而后者又使用 pandas 实现。

我看到的问题是我正在加载的 csv 文件没有索引列,因此 Dask 将第一列解释为索引,然后将列名向右移动。

一个例子:在此处输入图像描述

日期时间 (dt) 列应该是第一列,但是当读取 csv 时,它被解释为索引并且列名被移动,因此从它们的正确位置偏移。我将列names列表和dtypes字典提供给 read_csv 调用。

据我所知,如果我使用的是 pandas,我会提供index_col=Falsekwarg 来修复,如图所示但 Dask 返回一个故意错误,说明:Keywords 'index' and 'index_col' not supported. Use dd.read_csv(...).set_index('my-index') instead. 这似乎是由于并行化限制。

建议的修复(使用set_index('my-index))在这种情况下无效,因为它希望读取整个文件,同时还具有列名来设置索引。主要问题是,如果名称偏移,我无法准确设置索引列。

在 Dask 中,加载没有明确具有索引列的 csv 以使解释的索引列至少保留指定的列名的最佳方法是什么?

更多信息:

我正在使用的游戏数据集:https ://www.kaggle.com/NUFORC/ufo-sightings?select=scrubbed.csv

我使用的 Intake catalog.yml 文件如下:

我正在使用以下内容加载目录和相应的数据集:

这将导致读取上面显示的数据帧和该数据的 csv 副本:

与原始/原始数据 csv(无前导逗号)相比:

Dask 调用:

0 投票
1 回答
111 浏览

python - 谷歌 colab 中的“导入摄入”会生成 ContextualVersionConflict

在google colab中安装最新版本的intake-esm(2020.12.18)

但该import intake语句会产生以下错误:

谁能告诉我出了什么问题或如何解决这个问题?

0 投票
1 回答
39 浏览

pyarrow - Apache Arrow 还是羽毛插件?

我想使用本地羽毛文件作为 Intake 的来源。羽毛/箭头的插件还不存在还是我遗漏了什么?

0 投票
1 回答
41 浏览

python - 将参数添加到 Python Intake LocalCatalogEntry

我正在尝试LocalCatalogEntry为 Python 的 Intake 包构建一个(作为更大目录的一部分,它可能有多个条目,我正在尝试在此处创建其中一个)。但是,我似乎无法弄清楚如何向它提供用户参数来描述组变量名称(来自 hdf5 文件中)而不会出现错误。

结果是AttributeError: 'dict' object has no attribute 'describe'. 我已经尝试了各种排列并挖掘了源代码/文档,但无法弄清楚我应该如何输入这些信息才能使其成为有效输入。我是否尝试错误地输入用户参数?

0 投票
2 回答
66 浏览

python - 摄入量:目录级参数

我在这里阅读“参数” ,想知道我是否可以定义目录级别的参数,以便以后在目录源的定义中使用?

考虑一个简单的 YAML 目录,它有两个来源:

请注意,两个数据源(data1 和 data2)都使用snapshot_date参数内的urlpath参数?有了这个定义,我可以加载数据源:

请注意,这cat.data1().read()不起作用,因为snapshot_date默认为空字符串,因此 csv 驱动程序找不到路径“./data//data1.csv”。

我可以通过向每个(!)源添加部分来设置默认值,parameters如下所示。

但这看起来很复杂(太多重复的代码)并且对最终用户来说有点不方便——如果用户想要从给定日期加载所有数据源,他必须snapshot_date在初始化时显式地为每个(!)数据源提供参数。IMO,如果我用户可以在初始化目录时提供一次这个值,那就太好了。

有没有办法可以snapshot_date在目录级别定义参数?以便:

  • 我可以在目录参数的 YAML 定义中设置默认值(例如,在我的示例中为“最新”)
  • 或者可以在调用期间在运行时传递目录的参数值intake.open_catalog("./catalog.yaml", snapshot_date="20211029")
  • 在该目录的数据源定义中应该可以访问该值吗?

提前致谢

0 投票
2 回答
69 浏览

python - 划分摄入数据源

我有一个大型的日常文件数据集,位于/some/data/{YYYYMMDD}.parquet(或者也可以是 smth like /some/data/{YYYY}/{MM}/{YYYYMMDD}.parquet)。

我在 mycat.yaml 文件中描述数据源如下:

我希望能够将文件子集(分区)读入内存,

如果我跑, source = intake.open_catalog('mycat.yaml').source_partitioned; print(source.npartitions) 我会得到0. 可能是因为分区信息还没有初始化。之后source.discover()source.npartitions更新为1726磁盘上单个文件的数量。

我将如何加载数据:

  • 仅针对给定的一天(例如 20180101)
  • 持续几天(例如 20170601 和 20190223 之间)?

如果这在 wiki 上的某处有所描述,请随时将我指向相应的部分。

注意:在考虑了更多之后,我意识到这可能与 dask 的功能有关,并且我的目标可能可以通过使用方法将源转换为 dask_dataframe 以某种方式实现.to_dask。因此dask在这个问题上贴上标签。

0 投票
2 回答
54 浏览

python - Snakefile 的 config.yaml 中的相对路径

如何在我的配置文件中使用相对路径,以便用户无需更改USER输出目录的路径?

我有这个:

配置.yml

蛇文件

但想做这样的事情:

或这个:

但是我尝试过的方法都没有奏效。