Exchange导入Hive数据,报错 Method name getSpace not found

  • nebula 版本:2.5.0
  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
  • 是否为线上版本:N
  • 硬件信息
    3台,每台配置为8核/128G/系统盘40G/数据盘1T
  • 问题的具体描述
    用Exchange导入Hive数据,报错Method name getSpace not found

conf文件

{
  # Spark相关配置
  spark: {
    app: {
      name: Nebula Exchange 2.5.0
    }
    driver: {
      cores: 24 #驱动程序使用的CPU核数,仅适用于集群模式。
      #maxResultSize: 250G
    }
    cores {
      #max: 1
    }
  }

  # 如果Spark和Hive部署在不同集群,才需要配置连接Hive的参数,否则请忽略这些配置。
  #hive: {
  #  waredir: "hdfs://NAMENODE_IP:9000/apps/svr/hive-xxx/warehouse/"
  #  connectionURL: "jdbc:mysql://your_ip:3306/hive_spark?characterEncoding=UTF-8"
  #  connectionDriverName: "com.mysql.jdbc.Driver"
  #  connectionUserName: "user"
  #  connectionPassword: "password"
  #}

  # Nebula Graph相关配置
  nebula: {
    address:{
      # 以下为Nebula Graph的Graph服务和所有Meta服务所在机器的IP地址及端口。
      # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。
      # 不同地址之间以英文逗号 (,) 隔开。
      graph:["10.185.10.121:9669","10.185.10.122:9669","10.185.10.123:9669"]
      meta:["10.185.10.121:9669","10.185.10.122:9669","10.185.10.123:9669"]
    }
    # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。
    user: root
    pswd: nebula
    # 填写Nebula Graph中需要写入数据的图空间名称。
    space: denglu_shebei
    connection {
      timeout: 3000
      retry: 3
    }
    execution {
      retry: 3
    }
    error: {
      max: 32
      output: /tmp/errors
    }
    rate: {
      limit: 1024
      timeout: 1000
    }
  }
  # 处理点
  tags: [
    # 设置Tag player相关信息。
    {
      # Nebula Graph中对应的Tag名称。
      name: tid
      type: {
        # 指定数据源文件格式,设置为hive。
        source: hive
        # 指定如何将点数据导入Nebula Graph:Client或SST。
        sink: client
      }

      # 设置读取数据库basketball中player表数据的SQL语句
      exec: "*******************************"

      # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。
      # fields和nebula.fields里的配置必须一一对应。
      # 如果需要指定多个列名称,用英文逗号(,)隔开。
      fields: [wm]
      nebula.fields: [wm]

      # 指定表中某一列数据为Nebula Graph中点VID的来源。
      vertex:{
        field:tid
      }

      # 单批次写入 Nebula Graph 的最大数据条数。
      batch: 2560

      # Spark 分区数量
      partition: 32
    }
    # 设置Tag team相关信息。
    {
      name: imei
      type: {
        source: hive
        sink: client
      }
      exec: "*******************"

      fields: []
      nebula.fields: []

      vertex: {
        field: imei
      }
      batch: 2560
      partition: 32
    }

  ]

  # 处理边数据
  edges: [
    # 设置Edge type follow相关信息
    {
      # Nebula Graph中对应的Edge type名称。
      name: my_imei

      type: {
        # 指定数据源文件格式,设置为hive。
        source: hive

        # 指定边数据导入Nebula Graph的方式,
        # 指定如何将点数据导入Nebula Graph:Client或SST。
        sink: client
      }

      # 设置读取数据库basketball中follow表数据的SQL语句。
      
      exec: "************"

      

      # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。
      # fields和nebula.fields里的配置必须一一对应。
      # 如果需要指定多个列名称,用英文逗号(,)隔开。
      fields: [date_time]
      nebula.fields: [date_time]

      # 在source里,将follow表中某一列作为边的起始点数据源。
      # 在target里,将follow表中某一列作为边的目的点数据源。
      source: {
        field: src_id
      }

      target: {
        field: dst_id
      }

      # 单批次写入 Nebula Graph 的最大数据条数。
      batch: 2560

      # Spark 分区数量
      partition: 32
    }

  ]
}

投递任务命令:

nohup ${SPARK_HOME}/bin/spark-submit --conf spark.driver.extraJavaOptions='-XX:+UseG1GC -Droot.spark.logger=ERROR,rolling' --master yarn --conf spark.ui.showConsoleProgress=true --class com.vesoft.nebula.exchange.Exchange /data1/personal/nebula-exchange-2.5.0.jar -c /data1/personal/hive_application.conf -h > hive_application_1.log &

日志:

Spark Command: /usr/local/jdk1.8.0_131/bin/java -cp /data0/spark/spark-release/conf/:/data0/spark/spark-release/jars/*:/usr/local/hadoop-2.7.3/etc/hadoop/ -Xmx3g -XX:+UseG1GC -Droot.spark.logger=ERROR,rolling org.apache.spark.deploy.SparkSubmit --master yarn --conf spark.job.submithostaddress=172.17.0.1 --conf spark.ui.showConsoleProgress=true --conf spark.driver.extraJavaOptions=-XX:+UseG1GC -Droot.spark.logger=ERROR,rolling --class com.vesoft.nebula.exchange.Exchange /data1/personal/nebula-exchange-2.5.0.jar -c /data1/personal/hive_application.conf -h
========================================
Start ScribeAppender thread.
Exception in thread “main” com.facebook.thrift.TApplicationException: Method name getSpace not found
at com.facebook.thrift.TApplicationException.read(TApplicationException.java:133)
at com.vesoft.nebula.meta.MetaService$Client.recv_getSpace(MetaService.java:541)
at com.vesoft.nebula.meta.MetaService$Client.getSpace(MetaService.java:516)
at com.vesoft.nebula.client.meta.MetaClient.getSpace(MetaClient.java:168)
at com.vesoft.nebula.client.meta.MetaClient.getTags(MetaClient.java:198)
at com.vesoft.nebula.exchange.MetaProvider.getLabelType(MetaProvider.scala:71)
at com.vesoft.nebula.exchange.utils.NebulaUtils$.getDataSourceFieldType(NebulaUtils.scala:32)
at com.vesoft.nebula.exchange.processor.VerticesProcessor.process(VerticesProcessor.scala:110)
at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:153)
at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:128)
at scala.collection.immutable.List.foreach(List.scala:392)
at com.vesoft.nebula.exchange.Exchange$.main(Exchange.scala:128)
at com.vesoft.nebula.exchange.Exchange.main(Exchange.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:845)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

论坛搜一波 method name not found,你就知道

1 个赞

在这个页面找到了,java-client 报错“Method Name xxx not found”, 赞!

还要弱弱地问一下,
(1)这里所说的oss是什么?

(2)如何查询storage、meta和graph服务的ip和端口?

一个可以直接下载的包,:thinking: 你可以理解为一个百度云盘上的包,有了链接就能下

你配置的文件里有,也可以 show hosts 能看到端口号