目前在DataRicks的开发环境中工作,使用笔记本应用一些Python代码来分析数据库表中的一些虚拟数据(仅1000行),然后我将其部署到主环境,并在真实数据上运行它(100的数百万行)
首先,我只需要满足特定条件的单个列中的值,以便获取我当前正在执行的数据:
然后Python笔记本的其余部分对数据进行处理,这些数据在开发环境中运行良好,但当我真正运行它时,它在第2行显示内存不足
我想将数据直接导入Pandas数据框,这样就不需要从Spark进行转换,因为我认为这样可以避免错误,但在谷歌搜索了很多次之后,我仍然无法确定如何进行转换,我尝试过的唯一语法有效的方法是:
data=pd.read_表(r'database.table')
但只要得到:
'权限错误:[Errno 13]权限被拒绝:'
(注意:不幸的是,我无法控制我正在查询的数据库的内容、形式或位置)
在这种情况下,必须使用pd.read_sql_query
你的假设很可能是不真实的
Spark是一个分布式计算引擎,pandas是一个单节点工具集。因此,当您在数百万行上运行查询时,很可能会失败。在执行df.toPandas时,Spark会将所有数据移动到驱动程序节点,因此,如果数据超过驱动程序内存,则会出现内存不足异常。换句话说,如果您的数据集比内存大,那么pandas将无法正常工作
此外,在Databrick上使用pandas时,您会失去使用底层集群的所有好处。你只是在使用驱动程序
解决这个问题有两个明智的选择:
相关问题 更多 >
编程相关推荐