问题标签 [pytables]
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.
postgresql - 使用 Pytables 优化 HDF5 中的写入速度
问题是关于电脑(10*32位机器)的写入速度和postgresql查询性能。我会详细解释这个场景。
我有大约 80 Gb 的数据(以及适当的数据库索引)。我正在尝试从 Postgresql 数据库中读取它并使用 Pytables 将其写入 HDF5。我在一个 hdf5 文件中有 1 个表和 5 个变量数组。Hdf5 的实现不是多线程的,也没有启用对称多处理。我租了大约 10 台计算机一天,并尝试编写它们以加快我的数据处理速度。
至于 postgresql 表,总记录大小为 1.4 亿,我有 5 个主外键引用表。我没有使用连接,因为它不可扩展
因此,对于单个查找,我进行 6 次查找而不进行连接并将它们写入 hdf5 格式。对于每次查找,我在每个表及其对应的数组中插入 6 次。
查询非常简单
(类似五个查询)
每台计算机写入两个 hdf5 文件,因此总数约为 20 个文件。
一些计算和统计:
当前 Postgresql 数据库配置:
我目前的机器:8GB RAM 和 i7 第二代处理器。
我对 postgresql 配置文件进行了以下更改:shared_buffers:2 GB Effective_cache_size:4 GB
关于当前性能的说明:
我运行了大约十个小时,性能如下: 每个文件写入的记录总数约为6,21,000 * 5 = 31,05,000
瓶颈是我每天只能租用 10 小时(过夜),如果它以这种速度处理,大约需要11 天,这对我的实验来说太高了。
请建议我如何改进。问题: 1. 我应该在这些桌面上使用对称多处理(它有 2 个内核和大约 2 GB 的 RAM)。在这种情况下,建议或首选什么?2. 如果我更改我的 postgresql 配置文件并增加 RAM,它会增强我的进程。3.我应该使用多线程吗?在这种情况下,任何链接或指针都会有很大帮助
谢谢 Sree aurovindh V
python - 什么是 pytables 中的“从表中选择 max(column)”的等价物
我有一个包含大量数值的表,我知道我可以提取列并对其执行 max(),但可能有一种方法可以使用内核方法来执行此操作。只是似乎无法找到它。
python - PyTables 说丢失,阻止安装 VITables
PyTables 是在 Windows上安装VITables的要求之一。我用 Table.test 检查了安装,一切看起来都不错。测试返回:
tables.test ()
PyTables 版本:2.3.1
HDF5 版本:1.8.8
NumPy 版本:1.6.1
Numexpr 版本:1.4.1(不使用 Intel 的 VML/MKL)
Zlib 版本:1.2.3(在 Python 解释器中)
LZO 版本:2.04(2010 年 10 月 31 日)
BZIP2 版本:1.0.6(2010 年 9 月 6 日)
Blosc 版本:1.1.2(2010-11-04)
Python 版本:2.7.2(默认,2011 年 6 月 12 日,15:08: 59) [MSC v.1500 32 位 (Intel)]
字节顺序:小
检测到的内核:4
在 260.580 秒内运行 4729 次测试
好的
但是,VITables 安装始终失败并显示以下消息:“似乎没有安装 PYTables。正在中止 VITables 安装过程。 ”
知道如何解决这个问题吗?
谢谢。L.
python - 在 Windows 上使用 Python 2.5 的 Pytables 2.3.1:错误 - 找不到本地 hdf5 安装
我正在尝试使用 Python 2.5 在 Windows XP 上安装 PyTables 2.3.1。我收到以下错误:
我对 HDF5 库的安装有点困惑。HDF5188-win32-shared.zip
我下载了从HDF5 站点调用的 Windows 二进制文件,并运行了 zip 存档中的 .exe 文件。我现在在此文件夹中安装了 HDF5 库:
我已经尝试创建一个名为 HDF5_DIR 的环境变量指向这个文件夹,但仍然没有乐趣。我显然没有安装正确的 HDF5 库,但我不知道应该做什么。
请问有人有什么建议吗?
谢谢!
pytables - pytables - 如何加快列表中数据的检索
我有一个查询以下列格式返回约 100 万行:
并且需要超过 5 分钟。
当我自己尝试时tbl.where(conditions)
,查询花费了不到一秒的时间,所以大部分时间似乎都花在了迭代列表理解中的行上。
有没有更快的方法从查询中检索 field1/field2?(我有足够的 RAM 将结果存储在内存中)
python - 临时 Numpy 数组的数据库或表解决方案
我正在创建一个 Python 桌面应用程序,它允许用户选择不同的分布形式来对农业产量数据进行建模。我有时间序列农业数据 - 接近一百万行 - 保存在 SQLite 数据库中(尽管如果有人知道更好的选择,这并不是一成不变的)。一旦用户选择了一些数据,比如伊利诺伊州 1990-2010 年的玉米产量,我希望他们从下拉列表中选择一种分布形式。接下来,我的函数将分布拟合到数据中,并从 Numpy 数组中的拟合分布形式中输出 10,000 个点。我希望这些数据在程序执行期间是临时的。
为了提高效率,我只想对指定的区域和分布进行一次拟合和随后的数字绘制。我一直在研究 Python 中的临时文件,但我不确定这是保存许多不同 Numpy 数组的最佳方法。PyTables 看起来也是一种有趣的方法,并且似乎与 Numpy 兼容,但我不确定它是否适合处理临时数据。这些天似乎没有像 MongoDB 这样的 SQL 解决方案非常流行,从简历构建的角度来看,这也让我感兴趣。
编辑:阅读下面的评论并对其进行研究后,我将使用 PyTables,但我正在尝试找到解决此问题的最佳方法。是否可以创建一个像下面这样的表,而不是 Float32Col 我可以使用 scikits 时间序列类中的 createTimeSeriesTable() 或者我是否需要为日期创建一个日期时间列和一个用于掩码的布尔列,除了下面的 Float32Col 来保存数据。还是有更好的方法来解决这个问题?
任何有关此事的帮助将不胜感激。
python - 查询基于位的值
我有一个问题如何从 pytables 中获取值。值是基于位的,但存储为整数。
我表中的一列是Int32Column()
name 'Value'
。在本专栏中,我将存储整数值,其中每一位都具有不同的含义。因此,如果我想要一些信息,我将从表中获取值并进行一些位操作操作。我不知道如何查询以从表中获取指定值。
例如,我想知道Value
第一位 == 1 和第三位 ==1 的列中的所有值。
如何进行该查询?我正在尝试使用面具:
但是,我得到了例外:
处理查询必须非常快,因为将来会有大量行。一个限制是值必须是表中的 int 值,因为我从服务器获取 int 格式的值。我希望有人有更好的解决方案。
python - 安装 Pytables,查找 HDF5 安装时出错
我正在尝试在 Windows7 中安装 Pytables,即使我已经设置了所需的环境变量,我仍然会收到以下错误。
有没有更好的方法来处理这个?
numpy - 将 NumPy 数组添加到 PyTables 中的现有 HDF5 文件中?
我有两个切片的 Numpy 数组存储在内存中,比如 a 和 b,形状为 1*480*640,如何将它们添加到 PyTables 中现有的 HDF5 文件中?现有的 HDF5 文件有三个数组:n1,n2,n3,我希望新的 HDF5 文件有 5 个数组:n1,n2,n3,a,b。谢谢!
python - Pytables - 按某些标准从表中删除行
我有一张包含 Time32 列和大量行的表。我的问题是下一个。
当我的表达到一万行时,我想开始归档每一行早于指定值。为了创建查询,我将使用 Time32 列,它代表行中收集的数据的时间戳。因此,使用此查询我想删除工作表中的旧行,并存储在为存储存档记录而保留的其他表中。可能吗?如果是,最有效的方法是什么?
我知道 whereAppend() 方法,但是这个方法只复制记录,而不是从实际表中删除。谢谢你的建议。干杯!