今天,根據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方面的資料太少,需要自己去摸索。