gpt4 book ai didi

sql - 清洗/操作大数据的解决方案(目前使用Stata)

转载 作者:行者123 更新时间:2023-12-04 04:33:38 26 4
gpt4 key购买 nike

我目前正在使用一个非常大的数据集(10 个变量,超过 300m 行)的 10% 样本,当以 .dta 格式存储完整数据集时,其数据量超过 200 GB。当在具有约 50G RAM 和多核的 UNIX 服务器上使用 Stata-MP 时,Stata 能够在合理的时间内处理 10% 样本的 egen、折叠、合并等操作。

但是,现在我想继续分析整个样本。即使我使用的机器有足够的 RAM 来保存数据集,简单地生成一个变量也需要很长时间。 (我想也许是后台操作导致Stata运行到虚拟内存中)

这个问题也很容易并行化,即数据集中的行彼此独立,所以我可以像考虑 100 个较小的数据集一样轻松地考虑一个大数据集。

有没有人对如何处理/分析这些数据有任何建议,或者可以就我目前的一些建议给我反馈?我主要使用 Stata/SAS/MATLAB,所以也许还有其他我根本不知道的方法。

以下是我目前的一些想法:

  • 将数据集拆分为更小的数据集,并利用 Stata 中的非正式并行处理。我可以在每个分区上运行我的清理/处理/分析,然后在不存储所有中间部分之后合并结果。
  • 使用 SQL 存储数据并执行一些数据操作,例如聚合某些值。这里的一个问题是,Stata 可以轻松处理的一些任务(例如跨时间比较值)在 SQL 中无法很好地工作。此外,在对 30% 的数据样本运行 SQL 中的某些查询时,我已经遇到了性能问题。但也许我没有通过正确索引等进行优化。此外,Shard-Query 似乎可以帮助解决这个问题,但我还没有对它进行过彻底的研究。
  • R 看起来也很有前途,但我不确定它是否能解决处理如此大量数据的问题。
  • 最佳答案

    感谢那些评论和回复的人。我意识到我的问题与此类似 thread .我已经将我在 Stata 中的一些数据操作代码重写为 SQL,响应时间要快得多。我相信我可以通过正确利用索引并在必要时通过分区/分片使用并行处理来获得巨大的优化 yield 。完成所有数据操作后,我可以在 Stata 中通过 ODBC 导入该数据。

    关于sql - 清洗/操作大数据的解决方案(目前使用Stata),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20128095/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com