繁体   English   中英

如何将表直接导入数据块中的 Python dataframe?

[英]how do I import a table DIRECTLY into a Python dataframe within databricks?

目前在 Databricks 的开发环境中使用笔记本应用一些 Python 代码来分析数据库表中保存的一些虚拟数据(只有几 1,000 行),然后我将其部署到主环境并在真实数据上运行, (数百万行)

首先,我只需要满足特定条件的单个列中的值,以便获取我目前正在执行的数据:

  1. spk_data = spark.sql("SELECT field FROM database.table WHERE field == 'value'")
  2. 数据 = spk_data.toPandas()

然后 Python 笔记本的 rest 对在开发环境中运行良好的数据进行处理,但是当我真正运行它时,它在第 2 行掉了下来,说它超出了 ZCD69B4957F06CD818D7ZBF3D691

我想将数据直接导入到 Pandas dataframe 中,因此无需从 Spark 转换,因为我假设这将避免错误,但经过大量谷歌搜索后,我仍然无法弄清楚如何,我唯一的事情是尝试过在语法上有效的是:

数据 = pd.read_table (r'database.table')

但只要得到:

'PermissionError:[Errno 13] 权限被拒绝:'

(nb。不幸的是,我无法控制我正在查询的数据库的内容、形式或位置)

你的假设很可能是不正确的。

Spark 是一个分布式计算引擎,pandas 是一个单节点工具集。 因此,当您对数百万行运行查询时,它可能会失败。 在执行 df.toPandas 时,Spark 会将所有数据移动到您的驱动程序节点,因此如果它超过驱动程序 memory,它将失败,并出现 memory 异常。 换句话说,如果您的数据集更大,那么 memory、pandas 将无法正常工作。

此外,在数据块上使用 pandas 时,您将失去使用底层集群的所有好处。 您只是在使用驱动程序。

有两个明智的选择可以解决这个问题:

  • 使用 spark 重做您的解决方案
  • 使用具有 API 的考拉,大部分与 pandas 兼容

对于这种情况,您必须使用pd.read_sql_query

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM