d3.js无法可视化大型数据集

d3.js无法可视化大型数据集,d3.js,dc.js,crossfilter,D3.js,Dc.js,Crossfilter,我需要一些关于使用d3.js可视化大数据的建议。我从hbase中提取数据并存储在json文件中,以便使用d3.js进行可视化。当我提取几个小时的数据时,json文件的大小约为100MB,并且可以通过d3.js轻松可视化,但是使用dc.js和crossfilter的过滤速度有点慢。但是,当我提取1周的数据集时,json文件大小超过1GB,并尝试使用d3.js、dc.js和crossfilter进行可视化,那么可视化无法正常工作,也无法进行过滤。有人能告诉我是否有一个很好的解决方案,或者我需要在不同

我需要一些关于使用d3.js可视化大数据的建议。我从hbase中提取数据并存储在json文件中,以便使用d3.js进行可视化。当我提取几个小时的数据时,json文件的大小约为100MB,并且可以通过d3.js轻松可视化,但是使用dc.js和crossfilter的过滤速度有点慢。但是,当我提取1周的数据集时,json文件大小超过1GB,并尝试使用d3.js、dc.js和crossfilter进行可视化,那么可视化无法正常工作,也无法进行过滤。有人能告诉我是否有一个很好的解决方案,或者我需要在不同的平台上工作,而不是D3?

< P>如@马克所说,画布与DOM渲染是一件需要考虑的事情。当然,Web可视化的最大开销是DOM元素

然而,在某种程度上,交叉过滤可以通过将数据聚合到数量较少的可视元素中来缓解这种情况。它可以让你进入数十万行的数据。1GB可能会推动它,但100兆字节是可能的


但是,您确实需要知道聚合的级别。因此,例如,如果是一周的时间序列数据,那么按小时计算的bucketing可能是一种合理的可视化,7*24=168点。你实际上无法感知更多的点,因此要求浏览器绘制数千个元素是毫无意义的。

我完全同意Mark和Gordon之前所说的。但我必须补充我在过去几个月里学到的东西,因为我扩展了dc.js仪表板来处理相当大的数据集

正如所指出的,一个瓶颈是当数据集转换成数千个SVG/DOM或画布元素时,数据集的大小。画布在浏览器上更轻,但内存中仍有大量元素,每个元素都有其属性、单击事件等

第二个瓶颈是数据的复杂性。dc.js的响应性不仅取决于d3.js,还取决于crossfilter.js。如果您进行检查,您将看到他们使用的数据的大小非常惊人:超过230000个条目。然而,这些数据的复杂性相当低:每个条目只有五个变量。保持数据集的简单有助于大大扩展。请记住,在可视化过程中,每个条目中有五个变量意味着浏览器内存中大约有一百万个值

最后一点,您提到以JSON格式提取数据。虽然这在Javascript中非常方便,但解析和验证大型JSON文件要求很高。此外,它不是最紧凑的格式。这些文件被格式化为一个非常简单和紧凑的CSV文件


总之,您必须找到数据的大小复杂性之间的最佳点。一百万个数据值(大小乘以复杂度)是完全可行的。将其增加一个数量级,您的应用程序可能仍然可用。

多年来,我已经多次回答了这个问题。我建议你去读书。