提问
- nebula 版本:2.5.0
- nebula exchange 版本:2.5.0
- 导入方式:导入MaxCompute
- 将nebula升级至2.5.0且nebula exchange升级至2.5.0后,使用配置文件导入时发生如下报错(使用nebula 2.0.1版本和nebula exchange 2.1.0版本导入数据时未发生报错)
- meta服务使用telnet查看可以正常连接
终端输出
ERROR MetaClient: Get Space Error: java.net.UnknownHostException: nebula-metad-2.nebula-metad
Exception in thread "main" com.facebook.thrift.transport.TTransportException: java.net.UnknownHostException:
{
# Spark relation config
spark: {
app: {
name: Nebula Exchange 2.5.0
}
master:local
driver: {
cores: 1
maxResultSize: 1G
}
executor: {
memory:1G
}
cores:{
max: 16
}
}
# Nebula Graph relation config
nebula: {
address:{
graph:["<部署服务器的ip>:9669"]
meta:["<部署服务器的ip>:9559"]
}
user: root
pswd: nebula
space: dataworks_table_relation2
# nebula client connection parameters
connection {
# socket connect & execute timeout, unit: millisecond
timeout: 3000
retry: 3
}
execution {
retry: 3
}
error: {
# max number of failures, if the number of failures is bigger than max, then exit the application.
max: 32
# failed import job will be recorded in output path
output: /tmp/errors
}
# use google's RateLimiter to limit the requests send to NebulaGraph
rate: {
# the stable throughput of RateLimiter
limit: 1024
# Acquires a permit from RateLimiter, unit: MILLISECONDS
# if it can't be obtained within the specified timeout, then give up the request.
timeout: 1000
}
}
# Processing tags
# There are tag config examples for different dataSources.
tags: [
# MaxCompute
{
name: table
type:{
source:maxcompute
sink:client
}
table:dwd_parse_tools_table_list
project:atta_tools_dev
odpsUrl:xxx
tunnelUrl:xxx
accessKeyId:xxx
accessKeySecret:xxx
# partitionSpec:"dt='partition1'"
# maxcompute sql sentence only uses table name. make sure that table name is the same with {table}'s value'.
sentence:"select uid, table_name from dwd_parse_tools_table_list"
fields:[table_name]
nebula.fields:[name]
vertex:{
field: uid
}
partition:10
batch:256
}
]
# Processing edges
# There are edge config examples for different dataSources.
edges: [
# MaxCompute
{
name: is_child
type:{
source:maxcompute
sink:client
}
table:dwd_parse_tools_table_relation
project:atta_tools_dev
odpsUrl:xxx
tunnelUrl:xxx
accessKeyId:xxx
accessKeySecret:xxx
# partitionSpec:"dt='partition1'"
# maxcompute sql sentence only uses table name.
sentence:"select uid,partner_id from dwd_parse_tools_table_relation WHERE partner_id IS NOT NULL"
fields:[]
nebula.fields:[]
source:{
field: uid
}
target:{
field: partner_id
}
partition:10
batch:10
}
]
}
你的部署方式是docker?
meta在docker内部的地址 在docker外无法访问。
用K8S部署的,端口已经映射过了,在nebula 2.0.1版本和nebula exchange 2.1.0 版本时用同样的配置文件是可以成功导入数据的
2.5和2.0.1不一样的,meta 也会存在leader change了,发生leader change时客户端会拿真正的leader的host去连接meta服务。 真正的leader host 返回出来的是nebula-metad-2.nebula-metad。
或者你把所有meta服务的ip都映射出来,或者你换个meta地址
1 个赞