SparkSQL Flow 是基于 SparkSQL 开发的一种基于 XML 配置化的 SQL 数据流转处理模型。该模型简化了 SparkSQL 、Spark RDD的开发,并且降低开发了难度,适合了解数据业务但无法驾驭大数据以及 Spark 技术的开发者。
- 一个由普元技术部提供的基于 SparkSQL 的开发模型;
- 一个可二次定制开发的大数据开发框架,提供了灵活的可扩展 API;
- 一个提供了 对文件,数据库,NoSQL 等统一的数据开发视界语义;
- 基于 SQL 的开发语言和 XML 的模板配置,支持 Spark UDF 的扩展管理;
- 支持基于 Spark Standlone,Yarn,Mesos 资源管理平台;
- 支持开源、华为、星环等平台统一认证。
SparkSQL Flow 适合的场景:
- 批量 ETL;
- 非实时分析服务;
SparkSQL Flow XML 概览
- Properties 内定义一组变量,可用于宏替换;
- Methods 内可注册 udf 和 udaf 两种函数;
- Prepare 内可定义前置 SQL,用于执行 source 前的 sql 操作;
- Sources 内定义一个到多个数据表视图;
- Transformer 内可定义 0 到多个基于 SQL 的数据转换操作(支持 join);
- Targets 用于定义 1 到多个数据输出;
- 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
- 支持从 Hive 获得数据;
- 支持文件:JSON,TextFile(CSV),ParquetFile,AvroFile
- 支持RDBMS数据库:PostgreSQL, MySQL,Oracle
- 支持 NOSQL 数据库:Hbase,MongoDB
SparkSQL Flow TextFile Source
textfile 为读取文本文件,把文本文件每行按照 delimiter 指定的字符进行切分,切分不够的列使用 null 填充。
- <source type="textfile" table_name="et_rel_pty_cong"
- fields="cust_id,name1,gender1,age1:int"
- delimiter=","
- path="file:///Users/zhenqin/software/hive/user.txt"/>
- Tablename 为该文件映射的数据表名,可理解为数据的视图;
- Fields 为切分后的字段,使用逗号分隔,字段后可紧跟该字段的类型,使用冒号分隔;
- Delimiter 为每行的分隔符;
- Path 用于指定文件地址,可以是文件,也可是文件夹;
- Path 指定地址需要使用协议,如:file:// 、 hdfs://,否则跟 core-site.xml 配置密切相关;
SparkSQL Flow DB Source
- <source type="mysql" table_name="et_rel_pty_cong"
- table="user"
- url="jdbc:mysql://localhost:3306/tdb?characterEncoding=UTF-8"
- driver="com.mysql.jdbc.Driver"
- user="root" password="123456"/>
RDBMS 是从数据库使用 JDBC读取 数据集。支持 type 为:db、mysql、oracle、postgres、mssql;
- tablename 为该数据表的抽象 table 名称(视图);
- url、driver、user,password 为数据库 JDBC 驱动信息,为必须字段;
- SparkSQL 会加载该表的全表数据,无法使用 where 条件。
(编辑:好传媒网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|