数据操纵语句(Data Manipulation Language)将数据加载到相应表中,同时会根据用户在创表时指定的索引类型,为数据自动创建索引。
1.1.1
数据导入
1.1.1.1
从数据库中导入数据
1.1.1.1.1 Hive
1. load hive:<hiveDatabaseName>.<hiveTableName> to JUST:<justTableName>
2. config {
3. JUSTField1: "hiveField1",
4. JUSTField2: "hiveField2",
5. JUSTField3: "mapFunctionName(hiveField3…)",
6. ……
7. }
8. [filter <filterStr>]
示例:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.1.1.1.2
MySQL
1.
2.
3.
4.
5.
6.
7.
8.
1.1.1.2 从文件中导入数据
1.
2.
1.1.1.2.1
HDFS
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.1.1.3 特殊数据导入示例
1.1.1.3.1
轨迹数据导入
目前,JUST已支持在导入轨迹数据的同时,对轨迹数据进行预处理,如轨迹分段、轨迹去噪等。
语法:在3.2.1.或3.2.2.的基础上,新增userdata的json参数
参数:{预处理名:对应预处理参数},具体见3.4.2.轨迹操作
示例:从hdfs文件中导入轨迹,文件中无字段名,字段以逗号分隔符分割
1. LOAD hdfs:"/just_test_load/test_load" to JUST:test_table
2. Config {
3. oid: "0",
4. tid: "1",
5. time: "to_timestamp(3)",
6. geom: "st_makePoint(4,5)"
7. }userdata{
8. "just.traj.noise_filter":"{
9. '@type': 'HEURISTIC_FILTER',
10. 'maxSpeedMeterPerSecond':60.0,
11. 'minTrajLengthInKM':
1}",
12. "just.traj.segmentation":"{
13. 'segmenterType':'TIME_INTERVAL_SEGMENTER',
14. 'maxTimeIntervalInMinute':
10,
15. 'minTrajLengthInKM':
2}
16. } separator ','
1.1.2
从 Kafka中消费数据
JUST的实时数据接入,目前支持kafka数据源, 存储支持JUST、Kafka、JDBC等,共涉及DDL、DML、DQL三个部分。在INSERT INTO之前,必须先创建对应介质中的表,一个完整的SQL包含三部分:source ddl、sink ddl、insert int。
注:实时数据接入的完整示例,见附件4.3
语法:
1.
2.
3.
4.
5.
6.
7.
8.
9.
示例:
1. -- just_source和just_sink均为在前步骤已建好的表
2. INSERT INTO just_sink
3. SELECT
4. taxiId,
5. -- 将13位的时间时间戳转成TIMESTAMP,FROM_UNIXTIME接收10位的时间戳
6. TO_TIMESTAMP(FROM_UNIXTIME(btime/1000)) as ts2,
7. timestamp2MS(ts) as btime_ms,
8. UNIX_TIMESTAMP(DATE_FORMAT(ts,'yyyy-MM-dd HH:mm:ss')) as btime_s,
9. -- 创建point,以WKT的格式输出
10. st_asText(st_makePoint(lng,lat)) as point2,
11. -- 创建linestring,以WKT的格式输出
12. st_asText(st_makeLine(linestring_point_data)) as linestring2,
13. -- 创建polygon,以WKT的格式输出
14. st_asText(st_makePolygon(st_makeLine(polygon_point_data))) as polygon2,
15. -- 创建mbr2,以WKT的格式输出
16. st_asText(st_makeBBOX(lng,lat, lng2, lat2)) as mbr2
17. FROM kafka_source;