我從一家零售商處收到了超過100GB的數據和6700萬條記錄。我的目標是做一些市場籃子分析和CLV。此數據是來自70列中的一個表的直接sql轉儲。我試圖找到一種方法來從這些數據中提取信息,因爲在小型筆記本電腦/桌面設備中管理本身變得非常耗時。我考慮了以下選項從Oracle到MySQL的大數據遷移
- 解析數據並將其轉換爲CSV格式。由於每條記錄中超過一半的信息是列名,因此文件大小可能會降至35-40GB左右。但是,我可能仍然需要使用db,因爲我無法使用R或Excel和6600萬條記錄。
- 將數據遷移到mysql數據庫。不幸的是,我沒有該表的模式,我試圖重新創建查看數據的模式。我可能需要將數據轉儲中的
to_date()
替換爲str_to_date()
以匹配MySQL格式。
有沒有什麼更好的辦法來處理呢?我需要做的就是通過運行一些查詢從SQL轉儲中提取數據。 Hadoop等是選項,但我沒有基礎設施來設置羣集。我正在考慮mysql,因爲我有存儲空間和一些內存。
假設我在MySQL的路徑走,我將如何導入數據?我正在考慮以下
- 使用
sed
之一,並與相應的str_to_date()
在線更換to_date()
。請注意,我需要爲100GB文件執行此操作。然後使用mysql
CLI導入數據。 - 編寫將讀取文件,轉換數據並直接寫入mysql的python/perl腳本。
什麼是快?感謝您的幫助。
發現'gshuf'或'shuf'從文件中獲取隨機樣本更有效。 – donnie