? Spark無疑是目前大數據處理分析事實標準,而且已經具備了一個平臺的潛質,何為平臺,平臺是且僅僅是app應用的容器或者內容的托管方,從這個視角看iOS/android是平臺;簡書微信也是平臺;平臺不提供內容、平臺不與內容提供者競爭,但平臺定義架構。Spark的下一步的商業發展前景維系于此,一旦Spark兼容的數據源數量、性能都具備絕對優勢以后,Spark作為平臺的護城河才算構筑起來,Spark作為大數據主流處理分析平臺的生態城堡才算落成。
? Spark數據源組件致力于構建統一的數據訪問,了解大數據的看到這句話就已經了解其復雜度大于難度,但這是一個回避不了的問題,大數據存儲太多:hive、hbase、es、kafka但缺乏一個可以一致地訪問它們的處理平臺,這個平臺不僅僅是可以訪問各種異構數據,重點在于在各種異構數據源之間做到能夠融合數據處理。目前看Spark的策略是內外兼修:既有自己開發開源出來的hive、hbase、kafka數據連接組件/開發規范,也有發動各個數據存儲商/社區提供出來的連接器如cassandra、phoenix,因此,Spark在數據源連接器的推動、開放方面一定是不遺余力的,同時要盡量保持大數據處理事實標準這個地位以不斷吸引新興數據存儲商/社區主動為Spark提供數據連接器。
? 本文是databricks文章?的翻譯
? 從Spark1.0最早加入SparkSQL組件開始,這個組件最流行的用途之一就是將數據讀入Spark平臺的數據管道,早期用戶最愛用它從hive表、Parquet列存儲讀取數據,現在讀JSon?也一樣方便。在Spark1.2我們邁出了更大的一步:令Spark大范圍原生支持集成更多異構數據源(基于新的Spark數據源API):
? 數據源API提供了一個可插拔機制來支持SparkSQL訪問結構化數據,數據源不再僅僅是一個讀取數據的管道,它提供的高度定制優化器使得行過濾和列剪枝可以在許多情況下下推到數據源本地,這種高度集成的優化可以大大減少需要處理的數據量(所謂定制、優化意指遵循不同數據源的開發規范做到分布式謂詞下推)
? 數據源怎么用?在SQL里引用它就是了,就這么簡單!:
CREATE TEMPORARY TABLE episodes
USING com.databricks.spark.avro
OPTIONS (path "episodes.avro")
或:
CREATE TEMPORARY VIEW mysqlInfo
USING org.apache.spark.sql.jdbc
OPTIONS (url "jdbc:mysql://192.128.1.1:3306/test",
dbtable "info", user 'root', password '')
? SparkSQL的sql解析器支持你直接在sql中用它,這至少有一個好處,那就是在此基礎上,可以直接在Spark的分布式SQL查詢引擎上做到支持大量異構數據源,而無需編碼。
? 數據源API的另一個好處是支持用戶以任何Spark支持的語言操作數據,不管數據來源是什么,例如用scala開發的數據源,pySpark用戶也可以用,而且SparkSQL支持異構數據源數據間方便地join,上述能力奠定了Spark1.2大數據分析一站式解決方案的基礎。
? 雖然這個API還很年輕,但已有幾種庫構建其上了:Apache Avro,Comma Separated Values (csv), and even dBASE Table File Format (dbf).
? 目前所有的庫參見mvn倉庫:http://dl.bintray.com/spark-packages/maven/databricks/,csv數據源的github地址在這里? 。請注意API與庫的區別,數據源API是開發規范,由第三方基于它來實現結合自身數據源的數據源連接器。目前正在開發的還有Hbase、JDBC,但不得不說數據源API的推進不盡理想,參見上述mvn庫列表,已發布的支持并不多,目前(2017年)由hortonworks提出的Hbase連接器shc仍處于開發當中,而華為早在2015年推出的astro也很久沒有維護了。而且對于如Kafka、Hbase這些數據源似乎應當另當別論,Spark官方網站提供有集成它們的開發規范,但這些規范并不是數據源API的套路。
? 最新的數據源連接器查看這里 。想要開發自己的數據源連接器可以參考這里:the reference library for reading Apache Avro, check out the example sources, or watch this meetup video.
? 此外,在Spark1.3中我們想要添加:partitioning分區, persistent tables持久化表, and optional user specified schema自定義schema.
參考:Spark多數據源計算實踐及其在GrowingIO的實踐
如何實現一個spark數據源(基于spark 1.6.1)?
附:華為正式宣布開源Astro項目,推動Spark業界廣泛應用
2015-07-23 09:12:00?? 來源:CTI論壇
? 華為7月20日在O'Reilly Open Source Convention (OSCON) 上宣布Spark SQL on HBase package正式開源。Spark SQL on HBase package項目又名 Astro,端到端整合了Spark,SparkSQL和HBase的能力,有助于推動幫助Spark進入NoSQL的廣泛客戶群,并提供強大的在線查詢和分析以及在垂直企業大規模數據處理能力。
? 華為已經把Spark嵌入到其大數據解決方案 —— FusionInsight,在世界上最大的銀行中國工商銀行以及最大的通信服務提供商中國移動得到了應用。華為還將Spark作為云服務,計劃在今年晚些時候隨華為公有云發布。
? Astro的新特性使得數據修改,智能掃描系統具有強大的可操作性,類似于自定義過濾器和協處理器下推式,并讓更多的傳統RDBS能力可用,其查詢優化算法適用于一般組織的數據集,并可以通過分布式SQL引擎進行查詢。為了充分利用Spark最新的功能,包括Dataframe和外部數據源API,華為全球團隊一直持續更新項目代碼并符合最新發布的Spark1.4版本。此項目吸引了眾多社區貢獻者參與到開發和驗證中來。此外,華為團隊還對SparkSQL,機器學習和Spark R貢獻了很多新特性,豐富了Spark的標準庫。
? “從作為OPNFV創始成員推動公司的核心業務網絡的開放,到云計算和物聯網等新業務,開源已經成為華為公司層面的戰略,比如我們將世界上最輕巧的物聯網操作系統LiteOS開源,在標準化和簡化基礎設施的同時,還可以提升物聯網的可連接能力。”華為中軟總裁王成錄說到。
? 王成錄表示:“Spark憑借其在數據處理和分析的卓越架構成為Apache社區最有影響力的項目,一直是華為公司重點和首要的關注。我們相信以Spark作為我們大數據解決方案的核心,一定會給客戶帶來顯著的優勢,推動生態圈的技術創新,同時最大程度優化IT投資,成就客戶”
? 華為已在世界排名前5的移動運營商中國聯通運營子公司部署Spark,用于解決關鍵業務領域問題。該系統支持多個數據源條件下的近實時查詢和分析,允許分析員和數據科學家基于大規模數據更簡單有效的建立模型,對于某些特定場景,建模周期甚至能夠從幾個月縮減至幾周。另外,該系統基于Spark也成功的實現了用戶推薦和離網預測。華為和聯通正在攜手努力,把Spark應用延伸到新的業務領域。
? 而最近在南美最大的電信運營商之一的的成功商用,證明了相比傳統的BI系統和數據管理平臺,Spark和華為大數據解決方案能夠帶來更多的商業價值。運營商可以更迅速及時地獲取最新的、集中的客戶洞察,在試點的業務中實現更高的營銷轉化率,并能采用敏捷和快速的方式開發新的商業案例。數據分析人員不再需要進行MapReduce復雜編碼,機器學習的規模以及性能得到了極大的改善。
? “我們很高興華為成為Spark的主要貢獻者。作為在新興市場和電信行業的領導者,華為一直在努力擴大Spark的影響力”,Databricks 的聯合創始人以及Spark的發布經理Patrick Wendell 這樣評價華為:“華為從Spark項目初期就一直是堅定的貢獻者。我們期望華為繼續發展Spark,并推動其在全球市場的垂直應用”
? Spark提供了一個強大的編程框架,豐富的API和庫,充滿活力的生態系統,以及無與倫比技術創新的步伐,因而在大數據領域飛速上升。
“華為的全球團隊在基于業務驅動的情況下,把新的算法加入到MLlib庫中,同時在與Databricks和社區共同探索在矢量化處理以及SQL核心模塊性能優化等工作的合作的可能性”,華為美國研發中心大數據帶頭人Bing Xiao說到, “我們已經看到社區對Astro的興趣,通過與其他廠商合作的方式去增強和推廣。此外,新興客戶對Spark SQL on OLAP cube有明顯的訴求,而我們正在評估社區的接受程度,以便于開源。華為堅定地致力于Spark,并在廣泛參與社區和行業建設。”
附:華為Astro(SparkSQL on Hbase)試用
Astro官網:http://huaweibigdata.github.io/astro/
shc官網:https://github.com/hortonworks-spark/shc