问题标签 [bigdata]

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 投票
3 回答
3140 浏览

r - R:是否可以并行化/加速将 2000 万行以上的 CSV 读入 R?

一旦通过 CSV 加载,使用等来处理 CSV 中的数据read.csv就相当简单了。然而,阅读它是相当耗费时间的。multicoresegue

意识到最好使用 mySQL 等。

假设使用运行 R2.13 的 AWS 8xl 集群计算实例

规格如下:

任何想法/想法都非常感谢。

0 投票
5 回答
2611 浏览

performance - 在 R 中交叉制表两个大量逻辑向量的最快方法

对于长度 > 1E8 的两个逻辑向量xy,计算 2x2 交叉表的最快方法是什么?

我怀疑答案是用 C/C++ 编写它,但我想知道 R 中是否有一些东西已经非常聪明地解决了这个问题,因为它并不少见。

示例代码,用于 300M 条目(如果 3E8 太大,请随意让 N = 1E8;我选择的总大小略低于 2.5GB (2.4GB)。我的目标密度为 0.02,只是为了让它更有趣(可以如果有帮助,请使用稀疏向量,但类型转换可能需要时间)。

一些明显的方法:

  1. table
  2. bigtabulate
  3. 简单的逻辑运算(例如sum(x & y)
  4. 向量乘法(嘘)
  5. data.table
  6. 以上一些,带有parallel来自multicore包(或新parallel包)

我已经尝试了前三个选项(请参阅我的答案),但我觉得必须有更好更快的东西。

我发现它的table工作非常缓慢。 bigtabulate对于一对逻辑向量来说似乎有点矫枉过正。最后,执行普通的逻辑运算似乎是一个杂项,它查看每个向量的次数太多(3X?7X?),更不用说它在处理过程中会占用大量额外的内存,这是一个巨大的时间浪费。

向量乘法通常是一个坏主意,但是当向量稀疏时,将其存储起来,然后使用向量乘法可能会获得优势。

随意改变Np如果这将展示制表函数的任何有趣行为。:)


更新1。我的第一个答案给出了三种幼稚方法的时间,这是相信table缓慢的基础。然而,要认识到的关键是“逻辑”方法效率极低。看看它在做什么:

  • 4个逻辑向量运算
  • 4 种类型转换(逻辑到整数或 FP - for sum
  • 4个向量求和
  • 8个赋值(1个用于逻辑运算,1个用于求和)

不仅如此,它甚至没有被编译或并行化。然而,它仍然击败了裤子table。请注意bigtabulate,使用额外的类型转换( 1 * cbind...) 仍然有效table

更新 2. 以免有人指出 R 中的逻辑向量支持NA,并且这将成为这些交叉表系统中的扳手(在大多数情况下都是如此),我应该指出我的向量来自is.na()or is.finite()。:) 我一直在调试NA和其他非有限值——它们最近让我很头疼。如果您不知道您的所有条目是否都是,您可以在采用本问答中出现的一些想法之前进行NA测试- 这将是明智的。any(is.na(yourVector))


更新 3. Brandon Bertelsen 在评论中提出了一个非常合理的问题:为什么在子样本(初始集毕竟是样本 ;-))可能足以创建交叉样本时使用这么多数据制表?不要在统计数据中走得太远,但数据来自TRUE两个变量的观察非常罕见的情况。一个是数据异常的结果,另一个是由于代码中可能的错误(可能是错误,因为我们只看到计算结果 - 将变量x视为“Garbage In”和y“Garbage Out”。结果,问题是代码导致的输出问题是否仅仅是数据异常的情况,还是有其他一些好的数据变坏的情况?(这就是为什么我问一个关于遇到NaN,NA或时停止Inf。)

这也解释了为什么我的示例的值概率很低TRUE;这些确实发生的几率远低于 0.1%。

这是否暗示了不同的解决方案?是的:这表明我们可以使用两个索引(即TRUE每个集合中的位置)并计算集合交点。我避免设置交叉点,因为我被 Matlab 烧了一段时间(是的,这是 R,但请耐心等待),它会在交叉点之前先对集合的元素进行排序。(我隐约记得复杂性更令人尴尬:likeO(n^2)而不是O(n log n).)

0 投票
1 回答
246 浏览

hadoop - 在Hadoop中如何处理每天增加的数据

在 Hadoop 中如何处理每天增加的数据:

例如:

第一天我可能在某个输入文件夹中有 100 万个文件(例如 hadoop/demo)

在同一文件夹中的第二天,文件可能会从现有的 100 万个文件 + 另一个新的 100 万个文件增加,因此总共 200 万个。

同样是第 3 4 天...继续前进。

我的限制是 -> 第一天的文件不应该在第二天处理。

(ie) 当新文件与它们一起添加时,不应再次处理已经处理的文件。更具体地说,只应处理新添加的文件,而应忽略旧文件。

所以请帮助我解决这个问题。

不过,如果您不了解约束条件,请说出不清楚的地方,以便我可以详细说明我的约束条件!

0 投票
1 回答
181 浏览

python - 存档格式以在文件上附加数据而不提取

我有一个包含无序记录的大型 xml 文件(100GB 或更多),如下所示:

我必须以只读模式访问数据,但按页面对它们进行分组:

页面不得按 id 排序。

我的解决方案现在需要预处理 xml,并且对于每个页面:

  • 打开具有唯一命名约定的文件(例如第 1 页的“1.data”,“2.data”,...)
  • 追加当前页面的内容
  • 关闭文件

对我来说问题是处理大量页面需要创建数百万个文件,这当然不是很好。

我的问题是是否可以使用某种存档文件(就像 tar 或 zip)来序列化我的所有数据。优点是只有一个包含我所有数据的大文件,可以顺序读取,不一定需要压缩。

我更喜欢避免使用数据库,因为我的软件应该是独立的,而且我更喜欢使用 python。

谢谢,

里卡多

0 投票
2 回答
24478 浏览

r - 分段读取 CSV 文件的策略?

我在没有足够 RAM 读取它的计算机上有一个中等大小的文件(4GB CSV)(在 64 位 Windows 上为 8GB)。过去我只是将它加载到集群节点上并读入,但我的新集群似乎任意将进程限制为 4GB 的 RAM(尽管硬件每台机器有 16GB),所以我需要一个短期修复.

有没有办法将 CSV 文件的一部分读入 R 以适应可用的内存限制?这样我可以一次读取文件的三分之一,将其子集到我需要的行和列,然后读取下一个三分之一?

感谢评论者指出我可以使用一些大内存技巧读取整个文件: 快速读取非常大的表格作为 R 中的数据帧

我可以想到一些其他解决方法(例如,在一个好的文本编辑器中打开,删除 2/3 的观察结果,然后在 R 中加载),但如果可能的话,我宁愿避免它们。

因此,现在分段阅读似乎仍然是最好的方法。

0 投票
1 回答
194 浏览

datastore - BigData 数据存储区 INSERT 语句和 Java API 库在哪里?

我的任务是在 BigData 数据存储中创建图形数据。这里的 BigData 是 RDF 数据存储。但是我什至找不到 INSERT 语句的问题?是否有任何样本可以插入和存储数据?

Java API 库在哪里呢?

这里的 BigData 是 RDF 数据存储。更多信息可以在这里找到http://www.systap.com/bigdata.htm

0 投票
4 回答
1995 浏览

hadoop - 将大型 XML 解析为 TSV

我需要将几个 XML 解析为 TSV,XML 文件的大小约为 50 GB,我基本上怀疑我应该选择解析这个的实现我有两个选项

  1. 使用 SAXParser
  2. 使用 Hadoop

我对 SAXParser 实现有一些想法,但我认为可以访问 Hadoop 集群,我应该使用 Hadoop,因为这就是 hadoop 的用途,即大数据

有人可以提供一个提示/文档,说明如何在 Hadoop 中执行此操作,或者为如此大的文件提供有效的 SAXParser 实现,或者更确切地说,我应该为 Hadoop 或 SAXparser 做什么?

0 投票
3 回答
383 浏览

c# - 基于磁盘的基于文档的存储

网络上有免费的基于磁盘的高度可扩展的 NoSQL 存储系统吗?SQL Server 的好处是它可以扩展,但是将我的项目迁移到 SQL 表中是一场噩梦,因为它都是对象?

选项有: 1. 从内存运行 2. 序列化文档 3. 转换为 SQL 4. 使用大型 NoSQL 数据存储

0 投票
2 回答
153 浏览

php - 需要将大量 csv 文件插入数据库

我被要求在 CSV Files 上执行 csv -> mysql insert 。

他们有 20k 个 csv 文件,其中包含 100 到 100k 行数据。

所以这就是我认为我能做的:

在我的机器上,我可以使用一个简单的命令将所有文件合并为 1:

然后处理该文件,然后使用 php fgetcsv 处理该文件并将其插入数据库中。

或者

我可以编写一个 php 程序来读取目录处理每个文件,并在完成后将其传输到另一个文件夹。

有专用服务器可用

8GB内存可用的好电脑

你有什么建议?

0 投票
1 回答
278 浏览

sql-server - SQL Server 中的快速、大量数据输入

我目前正处于一个项目的准备阶段,该项目将涉及(除其他外)将大量数据写入数据库,速度非常快(即来自 6 个摄像头的图像(和相关元数据),每秒记录 40 多次) .

在网络上搜索,似乎“大数据”通常适用于更高的速率,但更小的“位”(即市场数据)。

所以..

  • 有没有比“试试看会发生什么”更科学的方法?
  • “只是扔硬件”是最好的方法吗?
  • 是否有一些我应该查看的技术/白皮书/搜索词?
  • 是否有令人信服的理由考虑使用其他数据库(或只是保存到磁盘)?

抱歉,这是一个相当开放的问题(对程序员来说可能更好?)