编辑SQL

·          SparkSQL节点的血缘信息以调度中心保存的数据为准。

·          在编辑SparkSQL节点的SQL时,如使用函数作为结果字段,则需为该字段配置别名。

 

SparkSQL组件或RDSSQL组件的编辑SQL功能提供了SQL语句编辑、执行和校验等功能。在弹出的SQL窗口中:

当前SQL编辑器中对查询返回的数据条数进行了限制,查询结果最大返回1000条数据。

如果对数据量过大、逻辑复杂的SQL进行了语法校验,可能会导致超时或者执行失败,并影响Spark Thrift Server的稳定性。

对于RDSSQL,其执行、选中执行和语法校验操作,仅用于小数据量情况下的SQL验证。

 

1.      执行SQL

SQL语句编辑完成后,可以执行SQL并查看执行结果,以确认SQL语句是否符合作业要求。

SQL编辑区域中提供了对选中的SQL语句和完整SQL语句的执行的功能。执行选中SQL时,仅支持管理员用户进行删除操作。查询结果默认返回最多1000条结果。

2.      SQL上传

单击编辑区域上方的<SQL上传>按钮,选择已经编辑好的SQL语句文件,可以快速生成SQL语句。

3.      格式化

单击编辑区域上方的<格式化>按钮,可以将编辑区域的SQL语句格式进行标准化,以方便查看。

4.      语法校验

SQL语句编辑完成后,可以校验SQL语句语法,以检查SQL语句是否符合语法要求。

SQL编辑区域中提供了对选中的SQL语句和完整SQL语句的语法校验功能。

5.      结果导出

对于SparkSQL,还支持配置是否导出到其他数据源中存储,支持存储至指定的HDFS目录,或存储至指定类型数据源的表中(支持新建表)。

在编辑SQL页面中,配置完成SQL语句并校验无误后,可以在页面底部单击<下一步>按钮,配置结果导出参数,参数说明请参见-2

导出情况说明:

导出到表操作时,对于部分类型数据源的表存在不支持的数据类型,详细说明请参见下表。

表-1 导出到表操作不支持的数据类型

表所属数据源的类型

不支持数据类型

达梦

bit

PostgreSQL/Greenplum

binarytinyint(离线表映射后含有binarytinyint的类型)、bitintervaluuid

Vertica

geographygeometry

 

导出类型选择Table,且写入模式为新建时,存在如下限制:

·          复杂类型无法在关系型数据库建表。

·          目前支持新建表的数据源类型为支持在表管理建表且可注册为离线表的类型,详情请参见注册/取消注册离线表中的-1

·          通过SQL建表和元数据采集方式新建的表,在SparkSQL节点使用并进行结果导出时,可能会因其数据类型造成新建表失败。

·          新建表方式与其他写入方式一样,在实际运行时可能会因数据类型适配出现精度问题,详情请参见离线分析组件中的-2

·          新建Greenplum表时,默认存储类型为“heap”。

 

如果需要导出,则需要配置导出参数,参数说明请参见下表。

表-2 结果导出参数说明

参数

说明

导出类型

选择导出的类型,包括HDFSTable。选择不同的导出类型,需要配置的参数不同

HDFS目录

选择HDFS的目录(如果选择HDFS,才需配置该参数)。点击输入框,弹出HDFS目录窗口,在窗口的列表中选择目标文件夹,并单击<确定>按钮即可。窗口中提供了图标,可在当前目录下新增子目录;提供了图标,可以返回上层目录;提供了图标,可以刷新窗口;列表中还提供了文件夹和文件删除功能,以及文件的下载功能

数据分隔符

选择分隔数据的标识符(如果选择HDFS,才需配置该参数)

表类型

选择表所属数据源的类型(如果选择Table,才需配置该参数)

数据源

选择数据源(如果选择Table,才需配置该参数)

schema

选择schema(如果选择Table,且“表类型”参数选择PostgreSQLGreenplum、达梦、Vertica时,才需配置该参数)

表名

选择或者输入表名称(如果选择Table,才需配置该参数)

写入模式

选择导出至表或HDFS目录时的数据写入模式:覆盖模式会覆盖掉原有的内容,请谨慎选择。为保证作业可以直接多次运行,新建模式的作业运行时会被适配为追加模式

  • 导出到HDFS目录时,支持的写入方式有追加、覆盖,结果数据导出到HDFS的文件中后,空值默认展示为“”,Null值默认展示为“\N”。两种方式的说明如下

  • 追加:指追加查询数据文件到所选的HDFS目录下

  • 覆盖:指清空选择的HDFS目录并将查询结果导出到所选的HDFS目录下

  • 导出到Table时,支持的写入方式有新建、追加、覆盖、更新(仅MySQLVertica表类型支持)。几种方式的说明如下:

  • 新建:指新建表并将查询出的数据导出到该表中。如用户在执行预编译时选择在表管理中新建表(即“新建导出表到表管理”配置为“是”),则预编译成功后,该表即可在表管理查看和使用

  • 追加:指追加查询数据文件到所选的表中,如该表不存在,则会首先新建表

  • 覆盖:指清空所选的表并将查询结果导出到该表中。对于GreenPlum类型的表,使用覆盖方式写入数据时,将会清空该表及其子表中的所有数据

  • 更新:指根据用户所选更新条件查询导出表中数据,有则更新,无则插入。更新条件列名不允许为数据库关键字。对于MySQL,执行更新要求数据库不开启GTID

字段映射方式

写入模式为“追加”和“覆盖”时,才需配置该参数

  • 对于同名映射,映射关系要求为:SQL计算结果表的列名须与导出表列名一致,数据类型需与导出表数据类型匹配。

  • 对于自定义映射,用户选择的映射关系要求为:数据类型需与导出表数据类型匹配。