首先資料源是sql server
考慮使用JDBC進行讀取
Spark內置了DataFrameReader進行資料表或者子查詢映射成DataFrame物件
的方法,現在假設這個表很大,如果一次性完成讀取及轉化記憶體會掛掉
有沒有很好的方法進行資料讀取及后續分析。
這里希望回答能夠使用Scala API給出,或者實在沒有Java也行
個人之前完成這種資料庫讀取的任務是使用python pandas read_sql
由于其支持回傳進行讀取的迭代器,可以之后對迭代器進行遍歷得到相應
的檔案并進行本地化。
這里采用分割的方法也是為了后續的處理可以并行,之后再"reduce"成一個
結果
相應示例代碼見
http://blog.csdn.net/sinat_30665603/article/details/72794256
不知道相同的實作在Spark中如何實作。
個人傾向于將資料從資料庫調出本地化(serialize)為物件后進行統一
地操作的方法。(最好不用SQL)
其中不妥的地方往指正。
能否給出類似的用Scala Spark的邏輯進行操作的方式,希望能較大程度
地利用多核并行的優勢,至少要比上面鏈接中設計的python腳本要快。
有沒有相關的資料處理的好書能夠推薦一下嗎?最好是英文的。
謝謝
uj5u.com熱心網友回復:
抱歉,由于個人能力有限,幫不了你。

uj5u.com熱心網友回復:
自己頂一下
uj5u.com熱心網友回復:
更新一下 匯出可以使用jdbc 自己的結果集(resultSet)來完成,其基本上就是一個迭代器。
但是還是請教一下 推薦的書目及處理方法。
uj5u.com熱心網友回復:
雖然自己弄出來了http://blog.csdn.net/sinat_30665603/article/details/74161591
但是 分回不來了

有沒有推薦書目的
有好書給分偶

uj5u.com熱心網友回復:
https://docs.databricks.com/spark/latest/data-sources/sql-databases.html#microsoft-sqlserver-example請參考
如果記憶體溢位,請加大并行,把讀入的資料分攤到多個機器上,溢位的幾率就會下降.
關注一下文章中 下推優化 那部分,其實讀入資料時是可以提前過濾一部分資料的,這也許對你有幫助
uj5u.com熱心網友回復:
把資料庫中的資料轉到hive中可以嗎uj5u.com熱心網友回復:
不是你是存在mysql還是存在mysql的集群,如果你只有一個mysql,那么就談不上資料的本地性了,你可以使用rdd,創建多個partition。partition是分布式的,那么你可以在邏輯控制去從不同node讀取mysql的,然后再轉成df,至于你是根據什么條件進行split,就看你的業務了。如果是集群,那盡量遵循資料本地性原則。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/58016.html
標籤:Spark
上一篇:阿里云
