批量导入工具SparkClientGenerator的几个小问题

1、导入parquet文件,指定的vertex id字段,rc4版的工具代码中,row.getString(vertexIndex) 获取vertex id value有点问题,因为vertexIndex并不是parquet中列的index

2、看AsyncGraphClientImpl 目前只有execute(String statement) 接口,还不支持参数化传递,string字段容易造成execute error: SyntaxError(使用工具SparkClientGenerator时)

  1. vertex index 不是parquet 中的index?没在映射文件中配置mapping 关系吗?

https://github.com/vesoft-inc/nebula/blob/master/docs/manual-CN/3.build-develop-and-administration/3.deploy-and-administrations/server-administration/storage-service-administration/data-import/spark-writer.md#编写配置文件

  1. 参数化传递是指? 类似这样?
private[this] val BATCH_INSERT_TEMPLATE = "INSERT %s %s(%s) VALUES %s"

val exec = BATCH_INSERT_TEMPLATE
                      .format(Type.EDGE.toString, edgeName, nebulaProperties, values)

future = client.execute(exec)

1、导入parquet文件,指定的vertex id字段,rc4版的工具代码中,row.getString(vertexIndex) 获取vertex id value有点问题,因为vertexIndex并不是parquet中列的index

这里能否在详细描述下你的具体问题?

2、看AsyncGraphClientImpl 目前只有execute(String statement) 接口,还不支持参数化传递,string字段容易造成execute error: SyntaxError(使用工具SparkClientGenerator时)

目前接口是这样的,还比较简单,还没有支持像在 SQL 中的那种通过特殊占位符的方式来拼接 Query,所以这里的 statement 可能需要小心处理,如果实在不确认可以事先在 console 中测试一下语句再填入接口。

也欢迎大家贡献代码,完善 client 的使用。

1、mapping 关系配置了,不过parquet 有比如30列,只配了10列,看代码vertex index 是配置的字段中的index,但是row.getString(vertexIndex) 应该是parquet文件中的index,从打印的exec日志看字段取得不正确,我暂时改为String.valueOf(extraValue(row, vertex)) 就ok了

2、参数化传递是类似你列举的一样,因为发现拼字符串对string类型字段容易出错,比如string字段里有"、\ 一些特殊字符,从导入工具执行时发现的

  1. bravo~ 这里有个 spark writer redesign的 pr
  2. 写错了那就没办法了 :joy: :joy: