| 
                         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 条件。
 
 
                        (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |