- nebula 版本:2.0.1
- exchange:spark utils是4月21号从gitee master分支上同步下来,自己编译的。commit id: 5fe3171b9b5b29bc60d470aa3f1e751b65c3b988
- 部署方式: docker-comose
- 是否为线上版本:N
- 硬件信息
- 磁盘: ssd
- 问题的具体描述
利用spark utils 将数据从hive表导出到sst文件。当导出的边只包含起点和终点的时候,spark报java.nio.BufferOverflowException。
以下是一部分application.conf,我放了两个edge配置。唯一区别是
第一个edge有属性(fields: [types]),这时候导出成功
第二个没有任何属性,导出失败。
{
## 以下配置,导出sst成功
name: edge1
type: {
source: hive
sink: sst
}
exec: "select id_src, id_dst, types from edge_table_1"
fields: [types]
nebula.fields: [types]
source: {
field: id_src
}
target: {
field: id_dst
}
partition: 3
},
{
## 以下配置,导出sst失败
name: edge2
type: {
source: hive
sink: sst
}
exec: "select id_src, id_dst from edge_table_1"
fields: []
nebula.fields: []
source: {
field: id_src
}
target: {
field: id_dst
}
partition: 3
}
错误日志:
21/04/26 14:51:03 ERROR executor.Executor: Exception in task 1.3 in stage 11.0 (TID 98)
java.nio.BufferOverflowException
at java.nio.Buffer.nextPutIndex(Buffer.java:527)
at java.nio.HeapByteBuffer.putLong(HeapByteBuffer.java:423)
at com.vesoft.nebula.encoder.RowWriterImpl.finish(RowWriterImpl.java:815)
at com.vesoft.nebula.encoder.NebulaCodecImpl.encode(NebulaCodecImpl.java:200)
at com.vesoft.nebula.encoder.NebulaCodecImpl.encodeEdge(NebulaCodecImpl.java:175)
at com.vesoft.nebula.exchange.processor.EdgeProcessor$$anonfun$process$1$$anonfun$apply$1.apply(EdgeProcessor.scala:204)