问题标签 [data-processing]
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.
code-metrics - 验证数据时降低圈复杂度的最佳方法是什么?
现在,我正在开发一个 Web 应用程序,该应用程序从可能返回空结果的数据库中接收大量数据。当通过应用程序的圈复杂度时,许多函数的权重在 10 到 30 之间。在大多数情况下,大多数具有高数字的函数都有很多类似于以下的行:
这引出了我的问题,尝试降低这些数字的最佳方法是什么?现在,我正在考虑将大多数功能置于 10 以下。
database - 您将如何处理此数据处理任务?
我有一个包含 2.5 亿个网站 URL 的文件,每个 URL 都有一个 IP 地址、页面标题、国家名称、服务器横幅(例如“Apache”)、响应时间(以毫秒为单位)、图像数量等。目前,这些记录在一个 25GB 的平面文件中。
我有兴趣从此文件生成各种统计信息,例如:
- 每个国家/地区代表的 IP 地址数
- 每个国家/地区的平均响应时间
- 图像数量 v 响应时间
等等等等
我的问题是,您将如何实现这种类型和规模的处理,以及您将使用哪些平台和工具(在合理的时间内)?
我对所有建议持开放态度,从 Windows 上的 MS SQL 到 Solaris 上的 Ruby,所有建议 :-) DRY 的奖励积分(不要重复自己),我不希望每次不同的削减都编写新程序是必需的。
任何关于什么有效和应该避免什么的评论将不胜感激。
java - 使用嵌入式 Java 数据库处理来自 Web 的 CSV 文件
简短版本:假设我不想长时间保留数据,如何在 HSQLDB 中以编程方式创建数据库并将一些 CSV 数据加载到其中?我的架构将与文件完全匹配,并且文件确实有足够的列名。
这是一个无人看管的过程。
细节:
我需要对通过网络下载的三个 CSV 文件应用一些简单的 SQL 技术,然后创建一些 DTO,然后我可以使用这些 DTO 与一些现有代码一起处理它们,并通过 REST 保存它们。我真的不想搞乱数据库,但 CSV 文件是通过外键链接的,所以我正在考虑使用内存中的嵌入式数据库来完成这项工作,然后把所有东西都扔掉。
我想到了一个像这样工作的命令行应用程序:
- 在 HSQLDB 中创建一个新的数据库。
- 使用 Apache HttpClient 在三个线程中启动三个 HTTP GET。
- 将 CSV 导入三个 HSQLDB MEMORY 表。
- 运行一些 SQL。
- 将结果解析为我现有的 DTO。
- ETC...
我可以使用对第 1 项和第 3 项有帮助的代码和实用程序的指针。还有我应该考虑的 HSQLDB 的替代方案吗?
algorithm - 对字谜词进行分组的算法
给定一组单词,我们需要找到字谜单词并使用最佳算法单独显示每个类别。
输入:
输出:
我现在正在开发的最佳解决方案是基于哈希表,但我正在考虑将字谜单词转换为整数值的方程。
示例: man => 'm'+'a'+'n' 但这不会给出唯一值。
有什么建议吗?
请参阅 C# 中的以下代码:
问题是如何开发GetUniqueInts(string [])
方法。
makefile - 用于 linux 的免费安全分布式 make 系统
是否有任何安全且免费的与语言无关的 Linux 分布式 make 系统?
背景资料:
我运行的科学实验(计算机科学实验)有时会有很大的依赖树,有时会有数千或数万个树节点。此依赖关系树位于数据文件、数据处理可执行文件和结果文件之上。
多年来,我尝试了各种技术,包括:
- 使用数据库滚动我自己的依赖跟踪器并在每台工作机器上运行脚本。这可能会有点麻烦,尤其是在尝试使用非脚本语言时。
- 将所有处理命令放在单个 makefile 中,伪目标可以在不同的工作机器上手动“构建”。这不需要特殊工具,但是手动将工作分解为大小均匀的伪目标块并在每个工作盒上正确调用“make”可能会很痛苦。
- distmake:自动分发来自单个 makefile 的命令的执行...
我基本上在寻找类似 distmake 的东西,但更安全。据我所知,distmake 本质上为每个工作节点留下了一个敞开的后门。
如果替代品比 distmake 更强大,那也很好。如果您中断主 distmake 调用,它可以关闭后门服务器,但它不会正确终止工作节点上的执行进程。
说明:
我正在使用 makefile 处理数据,而不是使用 gcc 编译和链接。从我在文档中看到的内容来看,distcc 是一个专门用于分发 gcc 的工具。我将在共享文件系统上托管的非常大的数据文件上运行我自己的可执行文件,而不是在源文件上运行 gcc,因此 distcc 没有帮助。
工作节点是外部可见的机器,所以我希望任何工作守护进程至少与 ssh 一样安全。尽我所能在不阅读源代码的情况下判断,distmake worker 守护进程会打开一个端口,并将接受来自任何附加到它的人的命令。他们将以启动守护程序的用户身份执行命令。
algorithm - 跨度快速最小值
给定数组列表和大量设置时间,我需要快速找到每个数组的某个子跨度中的最小值。在概念上:
我目前关于如何做到这一点的想法是在每个节点包含相关跨度中的最小值的数据上构建一个二叉树。这样,在一行的跨度中找到最小值将包括仅找到组成它的树节点的最小值。该集合对于每一行都是相同的,因此可以计算一次。
有没有人看到这个想法有任何问题或知道更好的方法?
为了澄清,我正在谈论的树将被设置为根节点将包含整个行的最小值,对于每个节点,它的左子节点将具有父节点跨度左半部分的最小值,并且右边也是一样。
这棵树可以映射到一个数组并以这样一种方式定义,即可以计算段边界,从而实现快速查找。
我正在优化的情况是我有一个固定的输入集和大量的前期时间,但随后需要对各种跨度进行许多快速测试。
java - Sybase IQ 上结果集中的最佳更新
我希望重写代码以更新 Sybase IQ 数据库 v14 上的表,该数据库执行以下操作:
- 选择表中的所有记录并将一些数据提取到文件中
- 更新表中每条记录的提取到文件标志
目前,一旦将记录写入文件,其提取标志就会更新。目前表中有 40 000 条记录,该进程使用 40GB 的数据库临时空间。相关表中的每条记录包含 60 个字段,最多列包含 120 个字符。
数据库服务器是否为表中的每条记录创建了新版本的数据,并且随着时间的推移,我们在数据库服务器上创建了一个临时数据雪球,其中使用了 40GB 的帐户?处理数据的最佳方法是首先提取数据,将其写入文件,然后执行批量更新。由于我的理解是 Sybase IQ 通常用于竞技场,我认为数据库会针对插入、删除和选择进行优化,但在更新时表现不佳?sybase 数据库 IQ 服务器是否会在 HP-UX 和 Windows server 2003 上执行相同的操作。
architecture - 非分层应用程序的模式
在企业应用架构模式中,Martin Fowler 写道:
因此,本书是关于如何将企业应用程序分解为层以及这些层如何协同工作的。大多数重要的企业应用程序使用某种形式的分层架构,但在某些情况下,其他方法(例如管道和过滤器)很有价值。我不会进入这些情况,而是关注分层架构的上下文,因为它是最有用的。
构建非分层应用程序/应用程序部分存在哪些模式?以金融机构的统计建模引擎为例。可能有一个数据访问层,但我希望大部分代码都在一个层中。您是否还会期望在这样的层中看到“四人帮”模式?域模型怎么样?您会完全使用 OO,还是纯粹是功能性的?
引用提到管道和过滤器作为层的替代模型。我可以很容易地想象一个这样的引擎使用管道作为分解数据处理的一种方式。还存在哪些其他模式?任务调度、结果聚合或工作分配等领域是否有共同的模式?MapReduce 有哪些替代方案?
perl - 对于基于流的文件编程,有哪些好的 Perl 模块?
有哪些好的 Perl 模块可以根据配置处理文件?
基本上,我正在处理数据文件,将它们拆分为列,根据某些列删除一些行,删除不必要的列,将它们与基线进行比较(写入发生更改的位置)并将数据和注释的 csv 保存为元数据。
示例文件是:
它将逐行与另一个文件(基线)进行比较,并且将突出显示一些不同的行(我正在使用Tk::DiffText
)。
这是管道[is a pipe]
file -> [split] -> [remove production] -> [sort] -> [compare] -> {用户进入并写入评论,根据需要编辑文件} -> [save csv] -> [save comments]
真正的问题是什么 perl 模块有助于建模和制作这样的管道流?经过更多研究,我发现了这个http://en.wikipedia.org/wiki/Flow-based_programming。
csv - 在文件中转置数据网格的最佳方法
我在 2D 网格上有大型数据文件。它们的组织方式使得网格中的后续数据行是文件中的后续行。每列由制表符分隔。本质上,这是一个 CSV 文件,但带有选项卡而不是列。
我需要转置数据(第一行成为第一列)并将其输出到另一个文件。最好的方法是什么?任何语言都可以(我更喜欢使用 Perl 或 C/C++)。目前,我的 Perl 脚本只是将整个文件读入内存,但我的文件非常庞大。