加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

基于Spark的数据分析实践

发布时间:2019-06-19 21:37:30 所属栏目:教程 来源:EAWorld
导读:引言: Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件。 本文主要分析了 Spark RDD 以及 RDD 作为开发的不足之处,介

SparkSQL Flow 是基于 SparkSQL 开发的一种基于 XML 配置化的 SQL 数据流转处理模型。该模型简化了 SparkSQL 、Spark RDD的开发,并且降低开发了难度,适合了解数据业务但无法驾驭大数据以及 Spark 技术的开发者。

  • 一个由普元技术部提供的基于 SparkSQL 的开发模型;
  • 一个可二次定制开发的大数据开发框架,提供了灵活的可扩展 API;
  • 一个提供了 对文件,数据库,NoSQL 等统一的数据开发视界语义;
  • 基于 SQL 的开发语言和 XML 的模板配置,支持 Spark UDF 的扩展管理;
  • 支持基于 Spark Standlone,Yarn,Mesos 资源管理平台;
  • 支持开源、华为、星环等平台统一认证。

SparkSQL Flow 适合的场景:

  1. 批量 ETL;
  2. 非实时分析服务;

SparkSQL Flow XML 概览

基于 Spark 的数据分析实践
  1. Properties 内定义一组变量,可用于宏替换;
  2. Methods 内可注册 udf 和 udaf 两种函数;
  3. Prepare 内可定义前置 SQL,用于执行 source 前的 sql 操作;
  4. Sources 内定义一个到多个数据表视图;
  5. Transformer 内可定义 0 到多个基于 SQL 的数据转换操作(支持 join);
  6. Targets 用于定义 1 到多个数据输出;
  7. After 可定义 0到多个任务日志;

如你所见,source 的 type 参数用于区分 source 的类型,source 支持的种类直接决定SparkSQL Flow 的数据源加载广度;并且,根据 type 不同,source 也需要配置不同的参数,如数据库还需要 driver,url,user和 password 参数。

Transformer 是基于 source 定的数据视图可执行的一组转换 SQL,该 SQL 符合 SparkSQL 的语法(SQL99)。Transform 的 SQL 的执行结果被作为中间表命名为 table_name 指定的值。

Targets 为定义输出,table_name 的值需在 source 或者 Transformer 中定义。

SparkSQL Flow 支持的Sourse

基于 Spark 的数据分析实践
  • 支持从 Hive 获得数据;
  • 支持文件:JSON,TextFile(CSV),ParquetFile,AvroFile
  • 支持RDBMS数据库:PostgreSQL, MySQL,Oracle
  • 支持 NOSQL 数据库:Hbase,MongoDB

SparkSQL Flow TextFile Source

textfile 为读取文本文件,把文本文件每行按照 delimiter 指定的字符进行切分,切分不够的列使用 null 填充。

  1. <source type="textfile" table_name="et_rel_pty_cong" 
  2.  fields="cust_id,name1,gender1,age1:int"  
  3.  delimiter="," 
  4.  path="file:///Users/zhenqin/software/hive/user.txt"/> 
  1. Tablename 为该文件映射的数据表名,可理解为数据的视图;
  2. Fields 为切分后的字段,使用逗号分隔,字段后可紧跟该字段的类型,使用冒号分隔;
  3. Delimiter 为每行的分隔符;
  4. Path 用于指定文件地址,可以是文件,也可是文件夹;
  5. Path 指定地址需要使用协议,如:file:// 、 hdfs://,否则跟 core-site.xml 配置密切相关;

SparkSQL Flow DB Source

  1. <source type="mysql" table_name="et_rel_pty_cong" 
  2.  table="user" 
  3.  url="jdbc:mysql://localhost:3306/tdb?characterEncoding=UTF-8" 
  4.  driver="com.mysql.jdbc.Driver" 
  5.  user="root" password="123456"/> 

RDBMS 是从数据库使用 JDBC读取 数据集。支持 type 为:db、mysql、oracle、postgres、mssql;

  1. tablename 为该数据表的抽象 table 名称(视图);
  2. url、driver、user,password 为数据库 JDBC 驱动信息,为必须字段;
  3. SparkSQL 会加载该表的全表数据,无法使用 where 条件。

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读