问题描述
nebula 版本:2.6.2
安装部署方式:Docker-Compose
通过 nebula-exchange-2.6.1.jar 从clickhouse导入数据至nebula遇到几个问题。
问题1:
在clickhouse_application.conf中:
- 如果配置所有的
metad节点地址,那么报错UnknownHostException。 - 如果只填写报错信息后的
metad节点地址, 那么不会报错,导入成功 - 如果只填写另两个
metad节点地址中的任意一个, 那么报相同错UnknownHostException。
报错信息如下:
22/02/21 08:07:21 ERROR MetaClient: Get Space Error: java.net.UnknownHostException: metad0
Exception in thread "main" com.facebook.thrift.transport.TTransportException: java.net.UnknownHostException: metad0
at com.facebook.thrift.transport.TSocket.open(TSocket.java:206)
at com.vesoft.nebula.client.meta.MetaClient.getClient(MetaClient.java:145)
at com.vesoft.nebula.client.meta.MetaClient.freshClient(MetaClient.java:165)
at com.vesoft.nebula.client.meta.MetaClient.getSpace(MetaClient.java:227)
at com.vesoft.nebula.client.meta.MetaClient.getTags(MetaClient.java:255)
at com.vesoft.nebula.exchange.MetaProvider.getLabelType(MetaProvider.scala:93)
at com.vesoft.nebula.exchange.utils.NebulaUtils$.getDataSourceFieldType(NebulaUtils.scala:31)
at com.vesoft.nebula.exchange.processor.VerticesProcessor.process(VerticesProcessor.scala:111)
at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:150)
at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:126)
at scala.collection.immutable.List.foreach(List.scala:392)
at com.vesoft.nebula.exchange.Exchange$.main(Exchange.scala:126)
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)
Caused by: java.net.UnknownHostException: metad0
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at com.facebook.thrift.transport.TSocket.open(TSocket.java:201)
... 24 more
问题 2:
导入数据的所有中文显示为?
运行环境
Docker 环境
λ docker --version
Docker version 20.10.12, build e91ed57
λ docker-compose --version
Docker Compose version v2.2.3
![]()
![]()
Clickhouse 环境
部署方式:docker-compose 部署
版本:22.1.3.7
数据:官方basketballplayer,额外添加一个存在中文属性的player顶点

Spark 环境
java 版本:OpenJDK 64-Bit Server VM, Java 1.8.0_252
scala 版本:Scala version 2.11.12
spark 版本:version 2.4.6
Nebula 环境
使用 docker-compose 部署:
来源:
$ git clone -b v2.6 https://github.com/vesoft-inc/nebula-docker-compose.git
修改项:
--v=0修改为--v=3
服务状态
创建Schema
通过 studio 界面连接并通过控制台界面创建 schema
## 创建图空间
CREATE SPACE IF NOT EXISTS basketballplayer (partition_num = 10, replica_factor = 1, vid_type = FIXED_STRING(30));
## 创建 Tag player
CREATE TAG player(name string, age int);
## 创建 Tag team
CREATE TAG team(name string);
## 创建 Edge type follow
CREATE EDGE follow(degree int);
## 创建 Edge type serve
CREATE EDGE serve(start_year int, end_year int);
配置信息
1 填写所有 metad 地址(address部分)
注: 有些为临时端口, 重启docker-compose 后需要修改。
{
# 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。
graph:["192.168.0.4:9669", "192.168.0.4:63264", "192.168.0.4:63271"]
meta:["192.168.0.4:63237", "192.168.0.4:63241", "192.168.0.4:63244"]
}
2 填写指定 metad 地址(address部分)
注: 有些为临时端口, 重启docker-compose 后需要修改。
{
# 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。
# 全填写时报错信息 ERROR MetaClient: Get Space Error: java.net.UnknownHostException: metad0
# 填写 metad0 地址, 填写其它两个节点会报相同错误
graph:["192.168.0.4:9669"]
meta:["192.168.0.4:63237"]
}
3 配置文件(全)
{
# Spark 相关配置
spark: {
app: {
name: Nebula Exchange 2.6.1
}
driver: {
cores: 1
maxResultSize: 1G
}
cores {
max: 16
}
}
# Nebula Graph 相关配置
nebula: {
address:{
# 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。
# # test 1
# graph:["192.168.0.4:9669", "192.168.0.4:63264", "192.168.0.4:63271"]
# meta:["192.168.0.4:63237", "192.168.0.4:63241", "192.168.0.4:63244"]
# test 2
graph:["192.168.0.4:9669"]
meta:["192.168.0.4:63237"]
}
user: root
pswd: nebula
space: basketballplayer
connection {
timeout: 3000
retry: 3
}
execution {
retry: 3
}
error: {
max: 32
output: /tmp/errors
}
rate: {
limit: 1024
timeout: 1000
}
}
tags: [
# 设置 Tag player 相关信息。
{
name: player
type: {
source: clickhouse
sink: client
}
url:"jdbc:clickhouse://192.168.0.4:20044/basketballplayer?characterEncoding=UTF-8"
user:"default"
password:""
numPartition:"5"
sentence:"select * from player"
fields: [name,age]
nebula.fields: [name,age]
vertex: {
field:playerid
}
batch: 256
partition: 32
}
{
name: team
type: {
source: clickhouse
sink: client
}
url:"jdbc:clickhouse://192.168.0.4:20044/basketballplayer?characterEncoding=UTF-8"
user:"default"
password:""
numPartition:"5"
sentence:"select * from team"
fields: [name]
nebula.fields: [name]
vertex: {
field:teamid
}
batch: 256
partition: 32
}
]
edges: [
{
name: follow
type: {
source: clickhouse
sink: client
}
url:"jdbc:clickhouse://192.168.0.4:20044/basketballplayer?characterEncoding=UTF-8"
user:"default"
password:""
numPartition:"5"
sentence:"select * from follow"
fields: [degree]
nebula.fields: [degree]
source: {
field:src_player
}
target: {
field:dst_player
}
batch: 256
partition: 32
}
{
name: serve
type: {
source: clickhouse
sink: client
}
url:"jdbc:clickhouse://192.168.0.4:20044/basketballplayer?characterEncoding=UTF-8"
user:"default"
password:""
numPartition:"5"
sentence:"select * from serve"
fields: [start_year,end_year]
nebula.fields: [start_year,end_year]
source: {
field:playerid
}
target: {
field:teamid
}
batch: 256
partition: 32
}
]
}
执行导入
上传配置文件和nebula-exchange-2.6.1.jar至 buckets-nebula-spark-master:/tmp
./bin/spark-submit --master spark://master:7077 --class com.vesoft.nebula.exchange.Exchange /tmp/nebula-exchange-2.6.1.jar -c /tmp/clickhouse_application.conf
- 填写所有 metad 地址报错,报错信息见问题描述
- 填写指定 metad 地址, 成功,但是中文信息为
?

其他信息
nebula-graph-issue-xsh.7z (1.7 MB)
注:使用的压缩软件为 7zip
nebula-graph-issue-xsh
|--- `images`: 截图信息
|--- `logs-0-before-load1`: 完成schema后备份
|--- `logs-1-after-load1`: 全填写导入报错失败后备份
|--- `logs-2-after-load2`: 填写报错信息后描述`metad`节点导入成功后备份
|--- `issue.md`: 问题记录
|--- `load1-info.txt`: 全填写导入控制台信息记录(报错)
|--- `load2-info.txt`: 填写报错信息后描述`metad`节点导入控制台信息记录(成功)



我尝试解答下哈,因为 Nicole 之前和我科普过,storage 的数据是通过访问 meta 来获得的,所以配置的是 meta 的地址。顺便。。你上面有个错别字,我给你编辑了下。


,教科书式的提问和追问。补充一个,配置的格式是 