Nebula Exchange 2.0 生成sst文件报key order的错误

  • nebula 版本:2.0.1
  • nebula exchange 版本:2.0
  • 部署方式:分布式
  • 问题描述:使用spark集群提交nebula exchange任务,数据输入格式为csv,输出格式为sst文件,当生成边的sst文件时报org.rocksdb.RocksDBException: Keys must be added in strict ascending order.的错误,spark具体报错信息如下。我比较疑惑的是:1.在生成顶点的sst文件时没有报错,只有生成边的sst文件才会报这个错误,我换了自己的数据集也是同样的问题;2.查看代码可以发现有sortWithinPartitions(“key”)操作,按道理说写入sst文件前就已经进行了排序操作,为什么还会出现这个问题。请各位大佬帮忙解决一下!
org.apache.spark.SparkException: Job aborted due to stage failure: Task 4 in stage 8.0 failed 4 times, most recent failure: Lost task 4.3 in stage 8.0 (TID 96, executor 10): org.rocksdb.RocksDBException: Keys must be added in strict ascending order.
	at org.rocksdb.SstFileWriter.put(Native Method)
	at org.rocksdb.SstFileWriter.put(SstFileWriter.java:132)
	at com.vesoft.nebula.exchange.writer.NebulaSSTWriter.write(FileBaseWriter.scala:42)
	at com.vesoft.nebula.exchange.processor.EdgeProcessor$$anonfun$process$3$$anonfun$apply$3.apply(EdgeProcessor.scala:245)
	at com.vesoft.nebula.exchange.processor.EdgeProcessor$$anonfun$process$3$$anonfun$apply$3.apply(EdgeProcessor.scala:219)
	at scala.collection.Iterator$class.foreach(Iterator.scala:891)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
	at com.vesoft.nebula.exchange.processor.EdgeProcessor$$anonfun$process$3.apply(EdgeProcessor.scala:219)
	at com.vesoft.nebula.exchange.processor.EdgeProcessor$$anonfun$process$3.apply(EdgeProcessor.scala:214)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:980)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:980)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2101)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2101)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
	at org.apache.spark.scheduler.Task.run(Task.scala:123)
	at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
	at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
CREATE SPACE spark_exchange_csv(partition_num=3, replica_factor=1, vid_type = INT64);
USE spark_exchange_csv;
CREATE TAG user(userId int);
CREATE TAG course(courseId int, courseName string);
CREATE EDGE action (actionId int, duration double, label bool, feature0 double, feature1 double, feature2 double, feature3 double);
  • application.conf配置文件
{
  # Spark relation config
  spark: {
    app: {
      name: Nebula Exchange 2.0
    }
    driver: {
      cores: 1
      maxResultSize: 2G
    }
    executor: {
        memory:2G
    }
    cores:{
      max: 2
    }
  }


  # Nebula Graph relation config
  nebula: {
    address:{
      graph:["xxxx:9669"]
      meta:["xxxx:9559"]
    }
    user: root
    pswd: nebula
    space: spark_exchange_csv

    path:{
        local:"/tmp"
        remote:"/sst"
        hdfs.namenode: "hdfs://xxxx:8020/"
    }
    connection {
      timeout: 3000
      retry: 3
    }
    execution {
      retry: 3
    }
    rate: {
      limit: 1024
      timeout: 1000
    }
  }

  tags: [
    {
      name: course
      type: {
        source: csv
        sink: sst
      }
      path: "hdfs://xxxx:8020/course.csv"
      fields: [_c0, _c1]
      nebula.fields: [courseId, courseName]
      vertex: {
        field: _c1,
        policy: "hash"
      }
      separator: ","
      header: false
      batch: 256
      partition: 32
      isImplicit: true
    }
    {
      name: user
      type: {
        source: csv
        sink: sst
      }
      path: "hdfs://xxxx:8020/user.csv"
      fields: [_c0]
      nebula.fields: [userId]
      vertex: _c0
      separator: ","
      header: false
      batch: 256
      partition: 32
      isImplicit: true
    }
  ]
  
  edges: [
    {
      name: action
      type: {
        source: csv
        sink: sst
      }
      path: "hdfs://xxxx:8020/actions.csv"
      fields: [_c0, _c3, _c4, _c5, _c6, _c7, _c8]
      nebula.fields: [actionId, duration, feature0, feature1, feature2, feature3, label]
      source: _c1
      target: {
        field: _c2
        policy: "hash"
      }
      separator: ","
      header: false
      batch: 256
      partition: 32
      isImplicit: true
    }
  ]
}

1 个赞

我这边按照你的配置文件本地测试没有复现出这个问题,你发一下spark-submit的命令吧,看下你的提交模式,在相同的模式下测试一下。

spark-submit \
--master yarn \
--name nebula_spark_exchange \
--deploy-mode cluster \
--queue offline \
--class com.vesoft.nebula.exchange.Exchange \
--conf spark.driver.memory=2G \
--conf spark.executor.memory=2G \
--conf spark.executor.cores=1 \
--conf spark.executor.instances=10 \
--conf spark.default.parallelism=1000 \
hdfs://xxxx:8020/nebula-exchange-2.0.0.jar -c /data0/csv_application.conf

我还是没有复现出那个key order的问题,你用这个pr的代码试试呢,你用的Exchange2.0 是不支持使用sst功能的,预计在2.0.2版本正式开放
https://github.com/vesoft-inc/nebula-spark-utils/pull/53

好的,谢谢,我现在尝试nebula=1.2.1,exchange=1.0的版本组合,导入同样的数据集,使用csv->client的方式是可以正常导入的,但使用csv->sst的形式,会出现如下错误,请问你们有遇到过这个问题吗?

org.apache.spark.shuffle.FetchFailedException: Failed to connect to xxx:45233
	at org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:528)
	at org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:459)
	at org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:62)
	at scala.collection.Iterator$$anon$12.nextCur(Iterator.scala:434)
	at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:440)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:30)
	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage2.sort_addToSorter_0$(Unknown Source)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage2.processNext(Unknown Source)
	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$10$$anon$1.hasNext(WholeStageCodegenExec.scala:614)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$2.apply(VerticesProcessor.scala:201)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$2.apply(VerticesProcessor.scala:194)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
	at org.apache.spark.scheduler.Task.run(Task.scala:109)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Failed to connect to xxx:45233
	at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:245)
	at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:187)
	at org.apache.spark.network.netty.NettyBlockTransferService$$anon$2.createAndStart(NettyBlockTransferService.scala:113)
	at org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:141)
	at org.apache.spark.network.shuffle.RetryingBlockFetcher.lambda$initiateRetry$0(RetryingBlockFetcher.java:169)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
	... 1 more
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: xxxx:45233
	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
	at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:323)
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	... 2 more
Caused by: java.net.ConnectException: Connection refused
	... 11 more




Last 4096 bytes of stderr :
b64/libc-2.17.so
7fa65e37b000-7fa65e37d000 rw-p 001c6000 08:03 131100                     /usr/lib64/libc-2.17.so
7fa65e37d000-7fa65e382000 rw-p 00000000 00:00 0 
7fa65e382000-7fa65e384000 r-xp 00000000 08:03 131106                     /usr/lib64/libdl-2.17.so
7fa65e384000-7fa65e584000 ---p 00002000 08:03 131106                     /usr/lib64/libdl-2.17.so
7fa65e584000-7fa65e585000 r--p 00002000 08:03 131106                     /usr/lib64/libdl-2.17.so
7fa65e585000-7fa65e586000 rw-p 00003000 08:03 131106                     /usr/lib64/libdl-2.17.so
7fa65e586000-7fa65e59d000 r-xp 00000000 08:03 1048799                    /usr/lib/java/jdk1.8.0_202/lib/amd64/jli/libjli.so
7fa65e59d000-7fa65e79c000 ---p 00017000 08:03 1048799                    /usr/lib/java/jdk1.8.0_202/lib/amd64/jli/libjli.so
7fa65e79c000-7fa65e79d000 r--p 00016000 08:03 1048799                    /usr/lib/java/jdk1.8.0_202/lib/amd64/jli/libjli.so
7fa65e79d000-7fa65e79e000 rw-p 00017000 08:03 1048799                    /usr/lib/java/jdk1.8.0_202/lib/amd64/jli/libjli.so
7fa65e79e000-7fa65e7b5000 r-xp 00000000 08:03 131126                     /usr/lib64/libpthread-2.17.so
7fa65e7b5000-7fa65e9b4000 ---p 00017000 08:03 131126                     /usr/lib64/libpthread-2.17.so
7fa65e9b4000-7fa65e9b5000 r--p 00016000 08:03 131126                     /usr/lib64/libpthread-2.17.so
7fa65e9b5000-7fa65e9b6000 rw-p 00017000 08:03 131126                     /usr/lib64/libpthread-2.17.so
7fa65e9b6000-7fa65e9ba000 rw-p 00000000 00:00 0 
7fa65e9ba000-7fa65e9dc000 r-xp 00000000 08:03 131093                     /usr/lib64/ld-2.17.so
7fa65e9dc000-7fa65e9ea000 r--s 000b1000 08:07 878837964                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/jackson-mapper-asl-1.9.13.jar
7fa65e9ea000-7fa65ea6d000 rw-p 00000000 00:00 0 
7fa65ea6d000-7fa65eabd000 rw-p 00000000 00:00 0 
7fa65eabd000-7fa65eabe000 ---p 00000000 00:00 0 
7fa65eabe000-7fa65eac1000 ---p 00000000 00:00 0 
7fa65eac1000-7fa65ebc2000 rw-p 00000000 00:00 0 
7fa65ebc2000-7fa65ebc4000 r--s 00008000 08:07 878838066                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/commons-compiler-3.0.8.jar
7fa65ebc4000-7fa65ebc6000 r--s 00018000 08:07 878837973                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/hive-jdbc-1.21.2.3.1.0.0-78.jar
7fa65ebc6000-7fa65ebc9000 r--s 00012000 08:07 878838032                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/kerb-server-1.0.1.jar
7fa65ebc9000-7fa65ebcb000 r--s 00017000 08:07 878838017                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/kerby-asn1-1.0.1.jar
7fa65ebcb000-7fa65ebcc000 r--s 00001000 08:07 878838008                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/minlog-1.3.0.jar
7fa65ebcc000-7fa65ebcd000 r--s 00007000 08:07 878838101                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/jackson-jaxrs-base-2.9.5.jar
7fa65ebcd000-7fa65ebcf000 r--s 00000000 08:07 878838071                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/jul-to-slf4j-1.7.16.jar
7fa65ebcf000-7fa65ebd0000 r--s 00004000 08:07 878837799                  /data1/hadoop/yarn/local/filecache/10/spark2-hdp-yarn-archive.tar.gz/osgi-resource-locator-1.0.1.jar
7fa65ebd0000-7fa65ebd8000 rw-s 00000000 08:05 655390                     /tmp/hsperfdata_yarn/196154
7fa65ebd8000-7fa65ebd9000 rw-p 00000000 00:00 0 
7fa65ebd9000-7fa65ebda000 r--p 00000000 00:00 0 
7fa65ebda000-7fa65ebdb000 rw-p 00000000 00:00 0 
7fa65ebdb000-7fa65ebdc000 r--p 00021000 08:03 131093                     /usr/lib64/ld-2.17.so
7fa65ebdc000-7fa65ebdd000 rw-p 00022000 08:03 131093                     /usr/lib64/ld-2.17.so
7fa65ebdd000-7fa65ebde000 rw-p 00000000 00:00 0 
7ffc282e2000-7ffc28304000 rw-p 00000000 00:00 0                          [stack]
7ffc28332000-7ffc28334000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]




org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle 0
	at org.apache.spark.MapOutputTracker$$anonfun$convertMapStatuses$2.apply(MapOutputTracker.scala:867)
	at org.apache.spark.MapOutputTracker$$anonfun$convertMapStatuses$2.apply(MapOutputTracker.scala:863)
	at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
	at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
	at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
	at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
	at org.apache.spark.MapOutputTracker$.convertMapStatuses(MapOutputTracker.scala:863)
	at org.apache.spark.MapOutputTrackerWorker.getMapSizesByExecutorId(MapOutputTracker.scala:677)
	at org.apache.spark.shuffle.BlockStoreShuffleReader.read(BlockStoreShuffleReader.scala:49)
	at org.apache.spark.sql.execution.ShuffledRowRDD.compute(ShuffledRowRDD.scala:165)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:49)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:49)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:49)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:49)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:49)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
	at org.apache.spark.scheduler.Task.run(Task.scala:109)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

你看下提交任务的机器上可以访问这个xxx:45233地址么

上面给出的报错信息是driver端的信息,应该是executor失败导致的45233端口无法连接上,我去看了下executor的具体报错信息

java.lang.UnsatisfiedLinkError: no nebula_codec in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at com.vesoft.nebula.NebulaCodec.<clinit>(NebulaCodec.java:23)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$1$$anonfun$apply$1.apply(VerticesProcessor.scala:181)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$1$$anonfun$apply$1.apply(VerticesProcessor.scala:177)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage2.sort_addToSorter_0$(Unknown Source)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage2.processNext(Unknown Source)
	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$10$$anon$1.hasNext(WholeStageCodegenExec.scala:614)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$2.apply(VerticesProcessor.scala:201)
	at com.vesoft.nebula.tools.importer.processor.VerticesProcessor$$anonfun$process$2.apply(VerticesProcessor.scala:194)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935)
	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:935)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
	at org.apache.spark.scheduler.Task.run(Task.scala:109)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
*** Error in `/usr/lib/java/jdk1.8.0_202/bin/java': free(): invalid pointer: 0x00007f0d9ef5cbc0 ***

我是按照这个教程来进行的导入,麻烦帮我看下有什么遗漏的步骤吗
编译exchange
导入csv文件

这个是1.x的JNI调用出现问题,我看论坛中有用户也有存在这个问题,重试没出现 Exchange 1.2.0 生成SST文件失败 java: free(): invalid pointer - #7 由 liyu04