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的实践
附:华为正式宣布开源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