对于 ODBC Oracle 查询,如何使 R 或 Python 与 SAS 一样快?

数据挖掘 Python r 大数据 sas
2022-01-30 09:03:07

我想使用 R 或 Python 来查询大型结构化 SQL 类型的数据,但与 SAS 相比它们非常慢。

我尝试使用 R 和 Python 返回一个 130 万条记录的 Oracle ODBC 直通查询。查询在 SAS 中需要 8-15 秒,在 Python 中需要 20-30 秒,在 R 中需要 50-70 秒。有人知道为什么吗?

使用的 R 包:

首先,我使用 R 中的 RODBC 包来查询 Oracle 数据库。然后我尝试了 ROracle 包,但两个包都比 SAS 慢得多。

使用的 Python 包:

对于 Python,我使用 Oracle 的 cx_Oracle 包进行查询。

非常感谢,肖恩

1个回答

这从 Python 的角度回答了您的一些问题:

Python 更快吗?

这个问题有点难以回答,这取决于你对 Python 的使用,但 Python 本身并不是一种快速的语言。但是,据报道 Python 中的pandas 库可以处理 33M-100M 行的表,请参阅this我自己曾经处理过来自 Postgres 表的大约 10M 行。有关使用 pandas 的详细实验,请参阅在链接中,他们对 88M 行和 74 列的数据集应用了一些操作。

我们是否需要 Hadoop 或并行处理或其他东西来使 R/Python 与 SAS 一样快?

在尝试使用 Hadoop 或 Spark 之前,我建议您遵循一些优化技巧(提示):

[1]优化 Pandas 代码以提高速度的初学者指南

[2]使用 pandas 处理大数据

这个链接(不要使用 Hadoop - 你的数据不是那么大)也很有用。

此外,对于 SAS 和 pandas 的比较,您可以阅读有关此类比较的 pandas 文档或this

是因为 R 和 Python 是基于矩阵的语言,而 SAS 更面向传统的数据库吗?

Python 不是基于矩阵的语言,据我所知,该语言默认不提供任何处理矩阵的功能。我认为您指的是numpy/scipy堆栈,这是一个独立的库。