- 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)