今天,根据taxi的GPS数据,定义了一个简单的avro schema:
1. gps数据格式:
taxi_ID 时间 坐标 坐标系 状态 车速 方向
鄂AT0497,2010-12-22T10:49:18+08:00,POINT(30.623808 114.224311)#4326,正常,9.059861,348.73
鄂AT0497,2010-12-22T10:49:58+08:00,POINT(30.62578 114.22668)#4326,正常,10.067083,69.36
鄂AT0497,2010-12-22T10:50:44+08:00,POINT(30.626736 114.22993)#4326,正常,11.439167,72.45
鄂AT0497,2010-12-22T10:51:17+08:00,POINT(30.62704 114.230828)#4326,正常,0.0,0.0
鄂AT0497,2010-12-22T10:52:17+08:00,POINT(30.62765 114.232936)#4326,正常,4.67125,63.47
鄂AT0497,2010-12-22T10:52:25+08:00,POINT(30.627826 114.233226)#4326,正常,0.0,0.0
鄂AT0497,2010-12-22T10:54:51+08:00,POINT(30.630626 114.23164)#4326,正常,11.387777,327.61
鄂AT0497,2010-12-22T10:55:31+08:00,POINT(30.63415 114.228785)#4326,正常,14.573889,325.9
鄂AT0497,2010-12-22T10:56:11+08:00,POINT(30.637661 114.22645)#4326,正常,11.552222,331.66
鄂AT0497,2010-12-22T10:56:51+08:00,POINT(30.641633 114.22546)#4326,正常,11.557361,10.7
鄂AT0497,2010-12-22T10:57:32+08:00,POINT(30.642375 114.227501)#4326,正常,8.0320835,108.75
注意:我使用的SecureCRT不支持中文输入,所以,在ID这项我去掉了“鄂”这个字,“正常“改为英语表示。
432代表WGS84.
2. 定义的schema格式:
{
"type":"record",
"name":"GPSdata",
"namespace":"wuhan.taxi",
"fields":[{"name":"id",
"type":"string",
"default":"NONE"},
{"name":"time",
"type":"string",
"default":"NONE"},
{"name":"coordinate",
"type":{"type":"array","items":"float"},
"default":[]},
// 这个array的默认值,自己试了几下,才通过检查,标记一下,以后就知道如何给array类型设置默认值了。
{"name":"projection_categories",
"type":"string",
"default":"NONE"},
{"name":"state",
"type":"string",
"default":"NONE"},
{"name":"speed",
"type":"float",
"default":-1},
{"name":"direction",
"type":"float",
"default":-1}
]
}
3. 新建了一个kvstore,但是新建完毕之后并不能马上使用,而是需要connect store命令来连接刚刚配置的新数据库,然后才能向其存取数据。
schema已经先导入数据库。
script.txt的内容如下:
其实,是完整一行,没有换行。我尝试过换行,使用斜杠 ” \ “,但是这样会报错,一条命令就只能写在一行。
读数据:
简单记一下,以免忘记,毕竟目前Oracle NoSQL方面的资料太少,需要自己去摸索。