簡體   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