問題:在將資料檔案(具有兩個字符分隔符)加載到Azure SQL Db. 我們可能做錯了什么以及如何解決問題?
使用Azure DatabricksPython中的筆記本,我們正在嘗試將資料檔案加載到Azure SQL Db中。資料檔案中的分隔符有兩個字符。在以下代碼中,我們得到如下所示的錯誤:~*
“python”引擎不支持熊貓資料幀記憶體不足
代碼:
import sqlalchemy as sq
import pandas as pd
data_df = pd.read_csv('/dbfs/FileStore/tables/MyDataFile.txt', sep='~*', engine='python', low_memory=False, quotechar='"', header='infer' , encoding='cp1252')
.............
.............
備注:如果我們洗掉該low_memory選項,我們會收到以下錯誤。盡管其他資料檔案比這個檔案更大,但有單個字符的分隔符,我們不會收到以下錯誤。
ConnectException: Connection denied (Connection refused) 獲取新通信通道時出錯 ConnectException error: 這通常是由OOM錯誤引起的,導致與Python REPL的連接被關閉。檢查查詢的記憶體使用情況。
uj5u.com熱心網友回復:
從以下檔案Pandas.read_csv():
此外,長度超過 1 個字符且不同于 '\s ' 的分隔符將被解釋為正則運算式,并且還將強制使用 Python 決議引擎。
由于它被解釋為正則運算式,并且在正則運算式中*具有特殊含義,因此您需要對其進行轉義。采用sep=r'~\*'
uj5u.com熱心網友回復:
可能您的檔案太大并且資料框不適合記憶體。您可以嘗試拆分處理嗎?即讀取 1000 Limes,從中制作資料框,推送到 SQL,Thema 讀取接下來的 1000 行等?
傳遞給 read_csv 的 nrows 和 skiprows 可用于此目的。
也許一種解決方法:使用 預處理檔案sed s/-*/;/g,然后您可以使用記憶體占用較少的 c 引擎。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/431819.html
上一篇:如何參考另一個集合中的資料?
