执行加载作业
清除和初始化图存储
清除系统有两个动作:清除数据,以及清除目录中的图数据库Schema定义。 执行这两种操作有两个不同的命令。
清除图存储
只适用于超级用户
CLEAR GRAPH STORE命令清除图存储(图数据库)中的所有数据。 默认情况下,系统会要求用户确认删除动作。若要跳过确认直接强制执行清除操作,可使用-HARD选项,例:
该命令清除图存储中的数据但不会影响图数据库Schema。
1.请十分谨慎地使用-HARD选项。 该操作不可撤销。 -HARD必须全部大写。
2. CLEAR GRAPH STORE和终止所有的TigerGraph服务器(包括GPE,GSE,RESTPP,Kafka和Zookeeper)。
3.加载作业和查询会被丢弃。
全部丢弃
只适用于超级用户
DROP ALL语句清除图存储和目录中的所有定义:包括顶点类,边缘类,图类,作业和查询。
执行加载作业
执行加载作业即执行已经安装的加载作业。 作业从源数据读取每一行,将每行解析为数据token,并应用加载规则和条件,创建要存储在图形数据存储中的新顶点和边的实例。
TigerGraph 2.0版本引入了增强的数据加载功能,该改进对CREATE和RUN语句略有修改。 之前RUN JOB语法中用于v1.x在线加载和离线加载的部分仍然支持。 此外,还可以通过直接向REST ++服务器提交HTTP请求来执行加载作业。
执行加载作业的语法
不推荐使用v2.0版本之前的 RUN JOB语法
从v2.0开始,RUN LOADING JOB是所有执行加载作业的首选语法。 2.0版本以前的联机发布作业和脱机加载作业的语法现在仍然支持,但不建议使用。
请注意,该函数名中包含关键字LOADING。 这样做可以让用户和GSQL更清楚该作业是一个加载作业而不是其他类型的作业(例如SCHEMA_CHANGE JOB)。
提交并发加载作业时,会为其分配一个作业ID编号,该编号显示在GSQL控制台上。 用户可以使用此作业ID来引用作业,更新其状态,中止作业或重新开始作业。 这些操作将在本节的后面介绍。
可选参数
-noprint
默认情况下,本命令会在加载运行时打印数行状态信息。
但如果包含了-noprint选项,则作业运行时的输出信息会省略进度和摘要的详情,但仍将显示作业ID和日志文件的位置。
-dryrun
如果使用-dryrun参数,系统将读取数据文件并按作业指示处理数据,但不会将任何数据加载到图形中。 此选项常用作诊断工具。
-n [i], j
-n
选项将加载作业限制为仅处理每个输入数据文件的一部分行。 -n的两种格式各包一个或两个参数。 例如,-n 50
表示读取第1行至第50行。
-n 10, 50
表示读取第10行到第50行。符号$被解释为“最后一行”,因此-n 10,$
表示从第10行读到结尾。
filevar
list
可选的USING子句可以包含一个文件变量列表。用户可以选择为每个文件变量分配一个filepath_string,遵循与CREATE LOADING JOB相同的格式。 此文件变量列表定义了,执行加载作业的哪个部分,或使用哪些数据文件。
由于在编译加载作业时,每个filevar和filepath_string都生成了一个RESTPP终止点。由此,加载作业便可以按照不同部分单独执行。 执行RUN LOADING JOB时,仅使用USING子句中提到filevar或文件标识符(“__GSQL_FILENAME_n__”)的终止点。 但如果省略了USING子句,则系统将运行整个加载作业。
如果执行时给出了filepath_string,它将覆盖加载作业中定义的filepath_string。 如果在加载作业或RUN LOADING JOB语句中未为特定filevar分配filepath_string,则系统会报告错误并退出作业。
CONCURRENCY
CONCURRENCY参数定义了加载作业可以发送到GPE的最大并发请求数。 默认值为256。
BATCH_SIZE
BATCH_SIZE参数定义了发送到GPE的每个并发请求中包含的数据行数。 默认值为1024。
以REST请求方式执行加载作业
执行加载作业的另一种方法是向REST ++服务器的POST /ddl/<graph_name> 端点提交HTTP请求。 由于REST ++服务器可以更直接地访问图形处理引擎,因此比GSQL中的RUN LOADING JOB语句速度更快。
执行CREATE LOADING JOB语句块时,GSQL系统会为每个文件源创建一个REST端点。 因此,每个REST请求每次调用一个文件源。 运行整个加载作业可能需要多个REST请求。
Linux curl命令是发出HTTP请求的便捷方式。 如果数据量很小,可以直接在命令中写入数据字符串,并配合使用-d参数:
如果数据量比较大,则更好的办法是使用-data-binary参数应用数据文件名
对于filepath_string,<filepath>应被替换为文件变量(来自DEFINE FILENAME语句)或基于位置的文件标识符(“__GSQL_FILENAME_n__”)。
有关发送REST ++请求的更多信息,请参阅RESTPP API用户指南RESTPP API User Guide 。
示例:下面的代码块显示了同一个加载作业的三个等效命令。 第一个使用gsql命令RUN JOB。 第二个使用Linux curl命令来支持HTTP请求,参数值放在URL的查询字符串中。 第三个通过curl命令的data payload -d选项给出参数值。
监控和管理加载作业
从v2.0开始,GSQL提供了命令用于监控加载作业状态,中止加载作业以及重新开始加载作业。
作业ID及其状态
当加载作业启动时,GSQL服务器会为其分配一个作业ID并显示给用户查看。 作业ID的格式通常是加载作业的名称加机器代号,后跟代码编号,例如gsql_demo_m1.1525091090494
默认情况下,活动加载作业将显示并定期更新其进度。 有两种方法可以禁止这些输出自动显示:
使用-noprint选项执行加载作业。
加载作业开始后键入CTRL + C,将停止继续显示进度的状态信息,但加载作业仍将继续。
SHOW LOADING JOB 的语法
命令SHOW LOADING JOB显示指定加载作业或所有当前作业的当前状态:
显示格式与RUN LOADING JOB命令的格式相同。 如果你不知道作业ID,但是知道作业名称或计算机名,则可以使用ALL选项查看活动的作业ID。
终止加载作业
命令ABORT LOADING JOB将中止指定的加载作业或所有活动的加载作业:
输出中会显示已中止的加载作业。
重新开始加载作业
命令RESUME LOADING JOB将重新开始先前由于某种原因未完成的作业。
如果要重启的作业已经完成,则此命令将不执行任何操作。 RESUME命令在上一次命令运行停止的地方继续开始, 也就是说,它不会把相同的数据加载两次。
对加载作业进行检查和排错
每个加载作业都会创建一个日志文件。作业启动时会显示日志文件的位置。 通常,日志文件位于
<TigerGraph.root.dir>/logs/restpp/restpp_loader_logs/<graph_name>/<job_id>.log 处。
此文件包含以下信息,它们对大多数用户都是有价值的:
加载作业的所有参数和选项设置
实时输出状态信息的拷贝
包含成功读取和解析的行数的统计报告
统计报告中包括了每种类型对象的创建数量,以及由于不同原因而无效的行的数目。 此报告还显示了是哪些行导致了错误。以下列表列出了报告中显示的统计信息。 统计数据有两种类型: 一个是文件层(行数),另一个是数据对象层(对象数量)。 如果错误发生在文件层,例如,某一行没有足够的列,则此加载作业中的所有LOAD语句都会跳过此行数据。 如果发生对象级错误或触发了失败条件,则只有相应报错的对象不被创建。即,该加载作业中的所有其他的对象仍然会被创建,只要它们没有发生对象级错误或没有触发相关失败条件。
文件级统计数 | 解释 |
Valid lines | 源数据文件中合规的行数 |
Reject lines | 被reject_line_rules拒绝的行数 |
Invalid Json format | 不合规的JSON格式的行数 |
Not enough token | 包含不完整列的行数 |
Oversize token | 包含Token的行数。请上调 |
对象级统计数 | 解释 |
Valid Object | 成功载入的对象数 |
No ID found | PRIMARY_ID为空的对象数 |
Invalid Attributes | 由于属性的数据格式错误导致的不合规对象数 |
Invalid primary id | 由于PRIMARY_ID的数据格式错误导致的不合规对象数 |
Incorrect fixed binary length | 由于数据长度与图数据库Schema中定义的长度不一致导致的不合规对象数 |
请注意,WHERE子句的失败不一定是个坏结果。 如果用户使用WHERE子句的意图仅是为了筛选出某些行,则必然会有一些行通过而另一些行报错。
例:
上述加载作业会生成下面的报告:
共有7行数据。 报告显示:
其中六行是合规的数据行
一行(第7行)没有足够的token。
在6条合规的数据行中,
6行中的3行生成了合规的movie顶点。
一行具有无效属性(第1行:年)
两行(第4行和第5行)不传递WHERE子句。
Last updated