云服务器内容精选

  • 数据类型表 表1 数据类型表 分类 关键字 数据类型 描述 整数类型 Int8 Int8 取值范围:【-128,127】 Int16 Int16 取值范围:【-32768,32767】 Int32 Int32 取值范围:【-2147483648,2147483647】 Int64 Int64 取值范围:【-9223372036854775808,9223372036854775807】 浮点类型 Float32 单精度浮点数 同C语言Float类型,单精度浮点数在机内占4个字节,用32位二进制描述。 Float64 双精度浮点数 同C语言Double类型,双精度浮点数在机内占8个字节,用64位二进制描述。 Decimal类型 Decimal Decimal 有符号的定点数,可在加、减和乘法运算过程中保持精度。支持几种写法: Decimal(P, S) Decimal32(S) Decimal64(S) Decimal128(S) 说明: P:精度,有效范围:[1:38],决定可以有多少个十进制数字(包括分数)。 S:规模,有效范围:[0:P],决定数字的小数部分中包含的小数位数。 字符串类型 String 字符串 字符串可以是任意长度的。它可以包含任意的字节集,包含空字节。因此,字符串类型可以代替其他DBMSs中的VARCHAR、BLOB、CLOB等类型。 FixedString 固定字符串 当数据的长度恰好为N个字节时,FixedString类型是高效的。 在其他情况下,这可能会降低效率。可以有效存储在FixedString类型的列中的值的示例: 二进制表示的IP地址(IPv6使用FixedString(16)) 语言代码(ru_RU, en_US … ) 货币代码(USD, RUB … ) 二进制表示的哈希值(MD5使用FixedString(16),SHA256使用FixedString(32)) 时间日期类型 Date 日期 用两个字节存储,表示从1970-01-01(无符号)到当前的日期值。日期中没有存储时区信息。 DateTime 时间戳 用四个字节(无符号的)存储Unix时间戳。允许存储与日期类型相同的范围内的值。最小值为1970-01-01 00:00:00。时间戳类型值精确到秒(没有闰秒)。时区使用启动客户端或服务器时的系统时区。 DateTime64 DateTime64 此类型允许以日期(date)加时间(time)的形式来存储一个时刻的时间值。 布尔型 Boolean Boolean ClickHouse没有单独的类型来存储布尔值。可以使用UInt8 类型,取值限制为0或1。 数组类型 Array Array Array(T),由T类型元素组成的数组。T可以是任意类型,包含数组类型。但不推荐使用多维数组,ClickHouse对多维数组的支持有限。例如,不能在MergeTree表中存储多维数组。 元组类型 Tuple Tuple Tuple(T1, T2, ...),元组,其中每个元素都有单独的类型,不能在表中存储元组(除了内存表)。它们可以用于临时列分组。在查询中,IN表达式和带特定参数的lambda函数可以来对临时列进行分组。 Domains数据类型 Domains Domains Domains类型是特定实现的类型: IPv4是与UInt32类型保持二进制兼容的Domains类型,用于存储IPv4地址的值。它提供了更为紧凑的二进制存储的同时支持识别可读性更加友好的输入输出格式。 IPv6是与FixedString(16)类型保持二进制兼容的Domain类型,用于存储IPv6地址的值。它提供了更为紧凑的二进制存储的同时支持识别可读性更加友好的输入输出格式。 枚举类型 Enum8 Enum8 取值范围:【-128,127】 Enum保存 'string'= integer的对应关系,例如:Enum8('hello' = 1, 'world' = 2) Enum16 Enum16 取值范围:【-32768,32767】 可为空 Nullable Nullable 除非在ClickHouse服务器配置中另有说明,否则NULL是任何Nullable类型的默认值。Nullable类型字段不能包含在表索引中。 可以与TypeName的正常值存放一起。例如,Nullable(Int8) 类型的列可以存储Int8类型值,而没有值的行将存储NULL。 嵌套类型 nested nested 嵌套的数据结构就像单元格内的表格。嵌套数据结构的参数(列名和类型)的指定方式与CREATE TABLE查询中的指定方式相同。每个表行都可以对应于嵌套数据结构中的任意数量的行。 示例:Nested(Name1 Type1, Name2 Type2, …)
  • 约束 支持在Hudi客户端执行Spark SQL操作Hudi。 支持在Spark2x的JD BCS erver中执行Spark SQL操作Hudi。 不支持在Spark2x的客户端执行Spark SQL操作Hudi,支持在Spark3.1.1及之后版本的客户端执行Spark SQL操作Hudi。 不支持在Hive、Hetu引擎中写hudi表,以及修改hudi表结构,仅支持读。 由于SQL的KeyGenerator默认是org.apache.hudi.keygen.ComplexKeyGenerator,要求DataSource方式写入时KeyGenerator与SQL设置的一致。
  • 示例 CREATE TABLE IF NOT EXISTS productdb.productSalesTable ( productNumber Int, productName String, storeCity String, storeProvince String, productCategory String, productBatch String, saleQuantity Int, revenue Int) STORED AS carbondata TBLPROPERTIES ( 'table_blocksize'='128', 'SORT_COLUMNS'='productBatch, productName')
  • 使用场景 通过指定列创建表 CREATE TABLE命令与Hive DDL相同。CarbonData的额外配置将作为表格属性给出。 CREATE TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type , ...)] STORED AS carbondata [TBLPROPERTIES (property_name=property_value, ...)];
  • 注意事项 以下是表格属性的使用。 Block大小 单个表的数据文件block大小可以通过TBLPROPERTIES进行定义,系统会选择数据文件实际大小和设置的blocksize大小中的较大值,作为该数据文件在HDFS上存储的实际blocksize大小。单位为MB,默认值为1024MB,范围为1MB~2048MB。如果设置值不在[1, 2048]之间,系统将会报错。 一旦block大小达到配置值,写入程序将启动新的CarbonData数据的block。数据以页面大小(32000个记录)的倍数写入,因此边界在字节级别上不严格。 如果新页面跨越配置block的边界,则不会将其写入当前block,而是写入新的block。 TBLPROPERTIES('table_blocksize'='128') 当在CarbonData表中配置了较小的blocksize,而加载的数据生成的数据文件比较大时,在HDFS上显示的blocksize会与设置值不同。这是因为,对于每一个本地block文件的首次写入,即使待写入数据的大小大于blocksize的配置值,也直接将待写入数据写入此block。所以,HDFS上blocksize的实际值为待写入数据大小与blocksize配置值中的较大值。 当CarbonData表中的数据文件block.num小于任务并行度(parellelism)时,CarbonData数据文件的block会被切为新的block,使得blocks.num大于parellelism,这样所有core均可被使用。这种优化称为block distribution。 SORT_SCOPE:指定表创建时的排序范围。如下为四种排序范围。 GLOBAL_SORT:它提高了查询性能,特别是点查询。TBLPROPERTIES('SORT_SCOPE'='GLOBAL_SORT') LOCAL_SORT:数据会本地排序(任务级别排序)。 NO_SORT:默认排序。它将以不排序的方式加载数据,这将显著提升加载性能。 SORT_COLUMNS 此表属性指定排序列的顺序。 TBLPROPERTIES('SORT_COLUMNS'='column1, column3') 如果未指定此属性,则默认情况下,没有列会被排序。 如果指定了此属性,但具有空参数,则表将被加载而不进行排序。例如,('SORT_COLUMNS'='')。 SORT_COLUMNS将接受string,date,timestamp,short,int,long, byte和boolean数据类型。
  • 参数描述 表1 CREATE TABLE参数描述 参数 描述 db_name Database名称,由字母、数字和下划线(_)组成。 col_name data_type 以逗号分隔的带数据类型的列表。列名由字母、数字和下划线(_)组成。 说明: 在CarbonData表创建过程中,不允许使用tupleId,PositionId和PositionReference为列命名,因为具有这些名称的列由二级索引命令在内部使用。 table_name Database中的表名,由字母、数字和下划线(_)组成。 STORED AS 参数carbondata,定义和创建CarbonData table。 TBLPROPERTIES CarbonData table属性列表。
  • 空间索引介绍 空间数据包括多维点、线、矩形、立方体、多边形和其他几何对象。空间数据对象占据空间的某一区域,称为空间范围,通过其位置和边界描述。空间数据可以是点数据,也可以是区域数据。 点数据:一个点具有一个空间范围,仅通过其位置描述。它不占用空间,没有相关的边界。点数据由二维空间中的点的集合组成。点可以存储为一对经纬度。 区域数据:一个区域有空间范围,有位置和边界。位置可以看作是一个定点在区域内的位置,例如它的质心。在二维中,边界可以可视化为一条线(有限区域,闭环)。区域数据包含一系列区域。 目前仅限于支持点数据,存储点数据。 经纬度可以编码为唯一的GeoID。Geohash是Gustavo Niemeyer发明的公共域地理编码系统,它将地理位置编码为一串由字母和数字组成的短字符串。它是一种分层的空间数据结构,把空间细分为网格形状的桶,是被称为Z阶曲线和通常称为空间填充曲线的许多应用之一。 点在多维中的Z值是简单地通过交织其坐标值的二进制表示来计算的,如下图所示。使用Geohash创建GeoID时,数据按照GeoID排序,而不是按照经纬度排序,数据按照空间就近性排序存储。
  • 不规则空间集合的聚合查询 查询语句及Filter UDF 根据polygon过滤数据 IN_POLYGON(pointList) UDF输入参数: 参数 类型 说明 pointList String 将多个点输入为一个字符串,每个点以longitude latitude表示。经纬度间用空格分隔,每对经纬度用逗号分隔,字符串首尾经纬度一致。 UDF输出参数: 参数 类型 说明 inOrNot Boolean 判断数据是否在指定的polygon_list之内。 使用示例: select longitude, latitude from geosot where IN_POLYGON('116.321011 40.123503, 116.137676 39.947911, 116.560993 39.935276, 116.321011 40.123503'); 根据polygon列表过滤数据。 IN_POLYGON_LIST(polygonList, opType) UDF输入参数: 参数 类型 说明 polygonList String 将多个polygon输入为一个字符串,每个polygon以POLYGON ((longitude1 latitude1, longitude2 latitude2, …))表示。注意“POLYGON”后有空格,经纬度间用空格分隔,每对经纬度用逗号分隔,一个polygon的首尾经纬度一致。IN_POLYGON_LIST必须输入2个以上polygon。 一个polygon示例: POLYGON ((116.137676 40.163503, 116.137676 39.935276, 116.560993 39.935276, 116.137676 40.163503)) opType String 对多个polygon进行并交差操作。 目前支持的操作类型: OR:A U B U C (假设输入了三个POLYGON,A、B、C) AND:A ∩ B ∩ C UDF输出参数: 参数 类型 说明 inOrNot Boolean 判断数据是否在指定的polygon_list之内。 使用示例: select longitude, latitude from geosot where IN_POLYGON_LIST('POLYGON ((120.176433 30.327431,120.171283 30.322245,120.181411 30.314540, 120.190509 30.321653,120.185188 30.329358,120.176433 30.327431)), POLYGON ((120.191603 30.328946,120.184179 30.327465,120.181819 30.321464, 120.190359 30.315388,120.199242 30.324464,120.191603 30.328946))', 'OR'); 根据polyline列表过滤数据。 IN_POLYLINE_LIST(polylineList, bufferInMeter) UDF输入参数: 参数 类型 说明 polylineList String 将多个polyline输入为一个字符串,每个polyline以LINESTRING (longitude1 latitude1, longitude2 latitude2, …)表示。注意“LINESTRING”后有空格,经纬度间用空格分隔,每组经纬度用逗号分隔。 对多个polyline区域内的数据会输出并集结果。 一个polyline示例: LINESTRING (116.137676 40.163503, 116.137676 39.935276, 116.260993 39.935276) bufferInMeter Float polyline的buffer距离,单位为米。末端使用直角创建缓冲区。 UDF输出参数: 参数 类型 说明 inOrNot Boolean 判断数据是否在指定的polyline_list之内。 使用示例: select longitude, latitude from geosot where IN_POLYLINE_LIST('LINESTRING (120.184179 30.327465, 120.191603 30.328946, 120.199242 30.324464, 120.190359 30.315388)', 65); 根据GeoId区间列表过滤数据。 IN_POLYGON_RANGE_LIST(polygonRangeList, opType) UDF输入参数: 参数 类型 说明 polygonRangeList String 将多个rangeList输入为一个字符串,每个rangeList以RANGELIST (startGeoId1 endGeoId1, startGeoId2 endGeoId2, …)表示。注意“RANGELIST”后有空格,首尾GeoId间用空格分隔,每组GeoId range用逗号分隔。 一个rangeList示例: RANGELIST (855279368848 855279368850, 855280799610 855280799612, 855282156300 855282157400) opType String 对多个rangeList进行并交差操作。 目前支持的操作类型: OR:A U B U C (假设输入了三个RANGELIST,A、B、C) AND:A ∩ B ∩ C UDF输出参数: 参数 类型 说明 inOrNot Boolean 判断数据是否在指定的polyRange_list之内。 使用示例: select mygeosot, longitude, latitude from geosot where IN_POLYGON_RANGE_LIST('RANGELIST (526549722865860608 526549722865860618, 532555655580483584 532555655580483594)', 'OR'); polygon连接查询 IN_POLYGON_JOIN(GEO_HASH_INDEX_COLUMN, POLYGON_COLUMN) 两张表做join查询,一张表为空间数据表(有经纬度列和GeoHashIndex列),另一张表为维度表,保存polygon数据。 查询使用IN_POLYGON_JOIN UDF,参数GEO_HASH_INDEX_COLUMN和polygon表的POLYGON_COLUMN。Polygon_column列是一系列的点(经纬度列)。Polygon表的每一行的第一个点和最后一个点必须是相同的。Polygon表的每一行的所有点连接起来形成一个封闭的几何对象。 UDF输入参数: 参数 类型 说明 GEO_HASH_INDEX_COLUMN Long 空间数据表的GeoHashIndex列。 POLYGON_COLUMN String Polygon表的polygon列,数据为polygon的字符串表示。例如,一个polygon是POLYGON ((longitude1 latitude1, longitude2 latitude2, …)) 使用示例: CREATE TABLE polygonTable( polygon string, poiType string, poiId String) STORED AS carbondata; insert into polygonTable select 'POLYGON ((120.176433 30.327431,120.171283 30.322245, 120.181411 30.314540,120.190509 30.321653,120.185188 30.329358,120.176433 30.327431))','abc','1'; insert into polygonTable select 'POLYGON ((120.191603 30.328946,120.184179 30.327465, 120.181819 30.321464,120.190359 30.315388,120.199242 30.324464,120.191603 30.328946))','abc','2'; select t1.longitude,t1.latitude from geosot t1 inner join (select polygon,poiId from polygonTable where poitype='abc') t2 on in_polygon_join(t1.mygeosot,t2.polygon) group by t1.longitude,t1.latitude; range_list连接查询 IN_POLYGON_JOIN_RANGE_LIST(GEO_HASH_INDEX_COLUMN, POLYGON_COLUMN) 同IN_POLYGON_JOIN,使用IN_POLYGON_JOIN_RANGE_LIST UDF关联空间数据表和polygon维度表,关联基于Polygon_RangeList。直接使用range list可以避免polygon到range list的转换。 UDF输入参数: 参数 类型 说明 GEO_HASH_INDEX_COLUMN Long 空间数据表的GeoHashIndex列。 POLYGON_COLUMN String Polygon表的rangelist列,数据为rangeList的字符串。例如,一个rangelist是RANGELIST (startGeoId1 endGeoId1, startGeoId2 endGeoId2, …) 使用示例: CREATE TABLE polygonTable( polygon string, poiType string, poiId String) STORED AS carbondata; insert into polygonTable select 'RANGELIST (526546455897309184 526546455897309284, 526549831217315840 526549831217315850, 532555655580483534 532555655580483584)','xyz','2'; select t1.* from geosot t1 inner join (select polygon,poiId from polygonTable where poitype='xyz') t2 on in_polygon_join_range_list(t1.mygeosot,t2.polygon); 空间索引工具类UDF GeoID转栅格行列号。 GeoIdToGridXy(geoId) UDF输入参数: 参数 类型 说明 geoId Long 根据GeoId计算栅格行列号。 UDF输出参数: 参数 类型 说明 gridArray Array[Int] 返回该geoid所包含的栅格行列号,以数组的方式返回,第一位为行,第二位为列。 使用示例: select longitude, latitude, mygeohash, GeoIdToGridXy(mygeohash) as GridXY from geoTable; 经纬度转GeoID。 LatLngToGeoId(latitude, longitude oriLatitude, gridSize) UDF输入参数: 参数 类型 说明 longitude Long 经度,注:转换后的整数类型。 latitude Long 纬度,注:转换后的整数类型。 oriLatitude Double 原点纬度,计算GeoId需要参数。 gridSize Int 栅格大小,计算GeoId需要参数。 UDF输出参数: 参数 类型 说明 geoId Long 通过编码获得一个表示经纬度的数。 使用示例: select longitude, latitude, mygeohash, LatLngToGeoId(latitude, longitude, 39.832277, 50) as geoId from geoTable; GeoID转经纬度。 GeoIdToLatLng(geoId, oriLatitude, gridSize) UDF输入参数: 参数 类型 说明 geoId Long 根据GeoId计算经纬度。 oriLatitude Double 原点纬度,计算经纬度需要参数。 gridSize Int 栅格大小,计算经纬度需要参数。 由于GeoId由栅格坐标生成,坐标为栅格中心点,则计算出的经纬度是栅格中心点经纬度,与生成该GeoId的经纬度可能有[0度~半个栅格度数]的误差。 UDF输出参数: 参数 类型 说明 latitudeAndLongitude Array[Double] 返回该geoid所表示的栅格的中心点的经纬度坐标,以数组的方式返回,第一位为latitude,第二位为longitude。 使用示例: select longitude, latitude, mygeohash, GeoIdToLatLng(mygeohash, 39.832277, 50) as LatitudeAndLongitude from geoTable; 计算金字塔模型向上汇聚一层的GeoID。 ToUpperLayerGeoId(geoId) UDF输入参数: 参数 类型 说明 geoId Long 根据输入GeoId计算金字塔模型上一层GeoId。 UDF输出参数: 参数 类型 说明 geoId Long 金字塔模型上一层GeoId。 使用示例: select longitude, latitude, mygeohash, ToUpperLayerGeoId(mygeohash) as upperLayerGeoId from geoTable; 输入polygon获得GeoID范围列表。 ToRangeList(polygon, oriLatitude, gridSize) UDF输入参数: 参数 类型 说明 polygon String 输入polygon字符串,用一组经纬度表示。 经纬度间用空格分隔,每对经纬度间用逗号分隔,首尾经纬度一致。 oriLatitude Double 原点纬度,计算GeoId需要参数。 gridSize Int 栅格大小,计算GeoId需要参数。 UDF输出参数: 参数 类型 说明 geoIdList Buffer[Array[Long]] 将polygon转换为一串geoid的范围列表。 使用示例: select ToRangeList('116.321011 40.123503, 116.137676 39.947911, 116.560993 39.935276, 116.321011 40.123503', 39.832277, 50) as rangeList from geoTable; 计算金字塔模型向上汇聚一层的longitude。 ToUpperLongitude (longitude, gridSize, oriLat) UDF输入参数: 参数 类型 说明 longitude Long 输入longitude,用一个长整型表示。 gridSize Int 栅格大小,计算longitude需要参数。 oriLatitude Double 原点纬度,计算longitude需要参数。 UDF输出参数: 参数 类型 说明 longitude Long 返回上一层的longitude。 使用示例: select ToUpperLongitude (-23575161504L, 50, 39.832277) as upperLongitude from geoTable; 计算金字塔模型向上汇聚一层的Latitude。 ToUpperLatitude(Latitude, gridSize, oriLat) UDF输入参数: 参数 类型 说明 latitude Long 输入latitude,用一个长整型表示。 gridSize Int 栅格大小,计算latitude需要参数。 oriLatitude Double 原点纬度,计算latitude需要参数。 UDF输出参数: 参数 类型 说明 Latitude Long 返回上一层的latitude。 使用示例: select ToUpperLatitude (-23575161504L, 50, 39.832277) as upperLatitude from geoTable; 经纬度转GeoSOT LatLngToGridCode(latitude, longitude, level) UDF输入参数: 参数 类型 说明 latitude Double 输入latitude。 longitude Double 输入longitude。 level Int 输入level,值区间[0-32]。 UDF输出参数: 参数 类型 说明 geoId Long 通过GeoSOT编码获得一个表示经纬度的数。 使用示例: select LatLngToGridCode(39.930753, 116.302895, 21) as geoId;
  • 快速示例 create table IF NOT EXISTS carbonTable ( COLUMN1 BIGINT, LONGITUDE BIGINT, LATITUDE BIGINT, COLUMN2 BIGINT, COLUMN3 BIGINT ) STORED AS carbondata TBLPROPERTIES ('SPATIAL_INDEX.mygeohash.type'='geohash','SPATIAL_INDEX.mygeohash.sourcecolumns'='longitude, latitude','SPATIAL_INDEX.mygeohash.originLatitude'='39.850713','SPATIAL_INDEX.mygeohash.gridSize'='50','SPATIAL_INDEX.mygeohash.minLongitude'='115.828503','SPATIAL_INDEX.mygeohash.maxLongitude'='720.000000','SPATIAL_INDEX.mygeohash.minLatitude'='39.850713','SPATIAL_INDEX.mygeohash.maxLatitude'='720.000000','SPATIAL_INDEX'='mygeohash','SPATIAL_INDEX.mygeohash.conversionRatio'='1000000','SORT_COLUMNS'='column1,column2,column3,latitude,longitude');
  • 建表 GeoHash编码: create table IF NOT EXISTS carbonTable ( ... `LONGITUDE` BIGINT, `LATITUDE` BIGINT, ... ) STORED AS carbondata TBLPROPERTIES ('SPATIAL_INDEX.mygeohash.type'='geohash','SPATIAL_INDEX.mygeohash.sourcecolumns'='longitude, latitude','SPATIAL_INDEX.mygeohash.originLatitude'='xx.xxxxxx','SPATIAL_INDEX.mygeohash.gridSize'='xx','SPATIAL_INDEX.mygeohash.minLongitude'='xxx.xxxxxx','SPATIAL_INDEX.mygeohash.maxLongitude'='xxx.xxxxxx','SPATIAL_INDEX.mygeohash.minLatitude'='xx.xxxxxx','SPATIAL_INDEX.mygeohash.maxLatitude'='xxx.xxxxxx','SPATIAL_INDEX'='mygeohash','SPATIAL_INDEX.mygeohash.conversionRatio'='1000000','SORT_COLUMNS'='column1,column2,column3,latitude,longitude'); SPATIAL_INDEX:自定义索引处理器。此处理程序允许用户从表结构列集合中创建新的列。新创建的列名与处理程序名相同。处理程序的type和sourcecolumns属性是必需的属性。目前,type属性只支持“geohash”。Carbon提供一个简单的默认实现类。用户可以通过扩展默认实现类来挂载geohash的自定义实现类。该默认处理程序还需提供以下的表属性: SPATIAL_INDEX.xxx.originLatitude:Double类型,坐标原点纬度 SPATIAL_INDEX.xxx.gridSize:Int类型,栅格长度(米) SPATIAL_INDEX.xxx.minLongitude:Double类型,最小经度 SPATIAL_INDEX.xxx.maxLongitude:Double类型,最大经度 SPATIAL_INDEX.xxx.minLatitude:Double类型,最小纬度 SPATIAL_INDEX.xxx.maxLatitude:Double类型,最大纬度 SPATIAL_INDEX.xxx.conversionRatio:Int类型,将经纬度小数值转换为整型值 用户可以按照上述格式为处理程序添加自己的表属性,并在自定义实现类中访问它们。originLatitude,gridSize及conversionRatio是必选参数,其余属性在Carbon中都是可选的。可以使用“SPATIAL_INDEX.xxx.class”属性指定它们的实现类。 默认实现类可以为每一行的sourcecolumns生成handler列值,并且支持基于sourcecolumns的过滤条件查询。生成的handler列对用户不可见。除SORT_COLUMNS表属性外,任何DDL命令和属性都不允许包含handler列。 生成的handler列默认被视为排序列。如果SORT_COLUMNS不包含任何sourcecolumns,则将handler列追加到现有的SORT_COLUMNS最后。如果在SORT_COLUMNS中已经指定了该handler列,则它在SORT_COLUMNS的顺序将保持不变。 如果SORT_COLUMNS包含任意的sourcecolumns,但是没有包含handler列,则handler列将自动插入到SORT_COLUMNS中的sourcecolumns之前。 如果SORT_COLUMNS需要包含任意的sourcecolumns,那么需要保证handler列出现在sourcecolumns之前,这样handler列才能在排序中生效。
  • 导入数据 GeoHash默认实现类扩展自定义索引抽象类。如果没有配置handler属性为自定义的实现类,则使用默认的实现类。用户可以通过扩展默认实现类来挂载geohash的自定义实现类。自定义索引抽象类方法包括: Init方法,用来提取、验证和存储handler属性。在失败时发生异常,并显示错误信息。 Generate方法,用来生成索引。它为每行数据生成一个索引数据。 Query方法,用来对给定输入生成索引值范围列表。 导入命令同普通Carbon表: LOAD DATA inpath '/tmp/geosotdata.csv' INTO TABLE geosot OPTIONS ('DELIMITER'= ','); LOAD DATA inpath '/tmp/geosotdata2.csv' INTO TABLE geosot OPTIONS ('DELIMITER'= ','); geosotdata.csv和geosotdata2.csv表请参考准备数据。
  • 准备数据 准备数据文件1:geosotdata.csv timevalue,longitude,latitude 1575428400000,116.285807,40.084087 1575428400000,116.372142,40.129503 1575428400000,116.187332,39.979316 1575428400000,116.337069,39.951887 1575428400000,116.359102,40.154684 1575428400000,116.736367,39.970323 1575428400000,116.720179,40.009893 1575428400000,116.346961,40.13355 1575428400000,116.302895,39.930753 1575428400000,116.288955,39.999101 1575428400000,116.17609,40.129953 1575428400000,116.725575,39.981115 1575428400000,116.266922,40.179415 1575428400000,116.353706,40.156483 1575428400000,116.362699,39.942444 1575428400000,116.325378,39.963129 准备数据文件2:geosotdata2.csv timevalue,longitude,latitude 1575428400000,120.17708,30.326882 1575428400000,120.180685,30.326327 1575428400000,120.184976,30.327105 1575428400000,120.189311,30.327549 1575428400000,120.19446,30.329698 1575428400000,120.186965,30.329133 1575428400000,120.177481,30.328911 1575428400000,120.169713,30.325614 1575428400000,120.164563,30.322243 1575428400000,120.171558,30.319613 1575428400000,120.176365,30.320687 1575428400000,120.179669,30.323688 1575428400000,120.181001,30.320761 1575428400000,120.187094,30.32354 1575428400000,120.193574,30.323651 1575428400000,120.186192,30.320132 1575428400000,120.190055,30.317464 1575428400000,120.195376,30.318094 1575428400000,120.160786,30.317094 1575428400000,120.168211,30.318057 1575428400000,120.173618,30.316612 1575428400000,120.181001,30.317316 1575428400000,120.185162,30.315908 1575428400000,120.192415,30.315871 1575428400000,120.161902,30.325614 1575428400000,120.164306,30.328096 1575428400000,120.197093,30.325985 1575428400000,120.19602,30.321651 1575428400000,120.198638,30.32354 1575428400000,120.165421,30.314834
  • 语法支持的类型 SecMaster SQL语法支持的类型如下: STRING,BOOLEAN,BYTES,DECIMAL,TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,DOUBLE,DATE,TIME,TIMESTAMP,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL,ARRAY,MULTISET,MAP,ROW。 父主题: SecMaster SQL语法参考
  • 创建表相关语法 表1 创建表相关语法 语法分类 功能描述 Format Avro Canal Confluent Avro CS V Debezium JSON Maxwell Ogg Orc Parquet Raw Connectors BlackHole ClickHouse DataGen Doris DWS Elasticsearch FileSystem Hbase Hive JDBC Kafka Print Redis Upsert Kafka
  • 创建表相关语法 表1 创建表相关语法 语法分类 功能描述 创建源表 DataGen源表 DWS源表 Hbase源表 JDBC源表 Kafka源表 MySQL CDC源表 Postgres CDC源表 Redis源表 Upsert Kafka源表 创建结果表 BlackHole结果表 ClickHouse结果表 DWS结果表 Elasticsearch结果表 Hbase结果表 JDBC结果表 Kafka结果表 Print结果表 Redis结果表 Upsert Kafka结果表 创建维表 DWS维表 Hbase维表 JDBC维表 Redis维表 Format Avro Canal Confluent Avro CSV Debezium JSON Maxwell Raw