Spark官方Blog:SequoiaDB與Spark深度整合

這是一篇來自咱們的技術合做夥伴,SequoiaDB巨杉數據庫的博客。做者是SequoiaDB的聯合創始人和CTO王濤先生,SequoiaDB是一款JSON文檔型的事務型數據庫。王濤帶着技術上非凡的遠見,帶領SequoiaDB的團隊取得了許多技術上的突破和成功。html

爲何選擇Spark

SequoiaDB是一款NoSQL數據庫,其能夠在不一樣的物理節點之間對數據進行復制,而且容許用戶指定使用哪個數據備份。SequoiaDB容許在同一集羣同時運行數據分析和數據操做負載,而且保證最小的I/O和CPU使用率。git

Apache Spark和SequoiaDB的聯合解決方案,使得用戶能夠搭建一個在同一個物理集羣中支持多種類型負載(如,SQL語句和流處理)的統一平臺。github

Spark-SequoiaDB Connector,讓SequoiaDB與Spark完美結合

Spark-SequoiaDB Connector是Spark的數據源,可讓用戶可以使用SparkSQL對SequoiaDB的數據庫集合中的數據進行讀寫。鏈接器用於SequoiaDB與Spark的集成,將無模式的存儲模型、動態索引以及Spark集羣的優點有機的結合起來。sql

圖片描述

Spark與SequoiaDB能夠在同一個物理環境中安裝,也能夠安裝在不一樣的集羣中。Spark-SequoiaDB Connector將查詢的條件下壓至SequoiaDB,獲取符合查詢條件的記錄。這一優化使得對操做型數據源的分析無需在SequoiaDB和Spark之間再使用ETL。數據庫

如下是部分示例代碼,有關如何在Spark-SequoiaDB 鏈接器中使用SparkSQL:apache

scala> sqlContext.sql("CREATE temporary table org_department ( deptno string, deptname string, mgrno string, admrdept string, location string ) using com.sequoiadb.spark OPTIONS ( host 'host-60-0-16-2:50000', collectionspace 'org', collection 'department', username 'sdb_reader', password 'sdb_reader_pwd')")
res2: org.apache.spark.sql.DataFrame = []

scala> sqlContext.sql("CREATE temporary table org_employee ( empno int, firstnme string, midinit string, lastname string, workdept string, phoneno string, hiredate date, job string, edlevel int, sex string, birthdate date, salary int, bonus int, comm int ) using com.sequoiadb.spark OPTIONS ( host 'host-60-0-16-2:50000', collectionspace 'org', collection 'employee', username 'sdb_reader', password 'sdb_reader_pwd')")
res3: org.apache.spark.sql.DataFrame = []

scala> sqlContext.sql("select * from org_department a, org_employee b where a.deptno='D11'").collect().take(3).foreach(println)
[D11,MANUFACTURING SYSTEMS,000060,D01,null,10,CHRISTINE,I,HAAS,A00,3978,null,PRES    ,18,F,null,152750,1000,4220]
[D11,MANUFACTURING SYSTEMS,000060,D01,null,20,MICHAEL,L,THOMPSON,B01,3476,null,MANAGER ,18,M,null,94250,800,3300]
[D11,MANUFACTURING SYSTEMS,000060,D01,null,30,SALLY,A,KWAN,C01,4738,null,MANAGER ,20,F,null,98250,800,3060]
…

案例1:交易歷史存儲系統

Spark+SequoiaDB的聯合解決方案幫助企業從數據中發現和獲取更多價值。咱們也舉一些金融行業應用的例子,某銀行使用了SequoiaDB+Spark的方案做爲其新的交易歷史信息存儲系統。優化

在過去的數十年中,大部分銀行都一直使用大型機做爲其核心的銀行業務系統支持。大型機的技術侷限性使得超過一年以前的歷史交易數據就須要從大型機上移出而轉存在其餘的磁盤(磁帶)中進行保存。spa

然而,現在,由於移動互聯網和網上銀行的興起,銀行用戶對於服務的要求大大的超過了從前,這也帶來了更多的需求。爲了讓客戶更好的體驗銀行的服務,讓產品服務更有競爭力,各大銀行也開始推出讓客戶能快速的查詢歷史記錄(包括1年之前的歷史記錄)等多項改進的服務。scala

圖片描述

經過使用SequoiaDB,該銀行在數據庫的50個物理節點,使用近1PB的空間,存儲了全部用戶長達15年的歷史數據。這一新系統讓用戶能夠輕鬆的獲取其全部的交易歷史,不管展示在移動客戶端或者網頁端。日誌

圖片描述

案例2:Spark+SequoiaDB 的產品精準推薦系統

在以前的案例中,咱們已經將全部的用戶歷史交易數據都存儲在了數據庫當中,基於這些歷史交易信息,咱們也能夠經過對這些數據的分析,對每一個用戶的交易行爲進行預測,對用戶進行分類和建模,最終根據分析的結果向每一個用戶推薦最適合的理財產品。

當用戶模型系統經過分析全部的歷史數據和日誌,計算出須要推薦的產品時,這些用戶特徵也會做爲這個用戶的一個標籤寫入這個用戶的信息中。這些新加入的用戶標籤,能夠幫助前臺的員工和產品推薦系統快速的分辨出每一個顧客的興趣和消費傾向。部署了這套系統後,該行的金融產品的推薦成功率提高了10倍以上。

圖片描述

將來與Spark結合的計劃

在實際合做中,咱們發現咱們不少的金融行業用戶都有興趣使用流處理(反洗錢和高頻交易),也有很大興趣在於交互式SQL處理(政府的監管系統)。咱們計劃進一步對SequoiaDB的Spark組件增長功能和提高穩定性,好比使得SparkSQL能支持標準的SQL2003.

博客原文

更多有關Spark-SequoiaDB Connector鏈接器的信息(Github)

相關文章
相關標籤/搜索