华为云用户手册

  • 浮点型 名称 描述 存储空间 取值范围 字面量 REAL 实数 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 REAL DOUBLE 双精度浮点数,15到17个有效位,具体取决于使用场景,有效位数并不取决于小数点位置 64位 4.94065645841246544e-324 ~1.79769313486231570e+308,正或负 DOUBLE FLOAT 单精度浮点数,6到9个有效位,具体取决于使用场景,有效位数并不取决于小数点位置 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 FLOAT 用法说明: 分布式查询使用高性能硬件指令进行单精度或者双精度运算时,由于每次执行的顺序不一样,在调用聚合函数,比如SUM(),AVG(),特别是当数据规模非常大时,达到数千万甚至数十亿,其运算结果可能会略有不同。这种情况下,建议使用DECIMAL数据类型来运算。 可以使用别名来指定数据类型。 示例: --创建具有float类型数据的表 CREATE TABLE float_t1 (float_col1 FLOAT) ; --插入具有float类型数据 insert into float_t1 values (float '3.50282346638528862e+38'); --查看数据 SELECT * FROM float_t1; float_col1 ------------ Infinity (1 row) --删除表 DROP TABLE float_t1; 当小数部分为0时,可以通过cast()转为对应范围的整数处理,小数部分会四舍五入。 示例: select CAST(1000.0001 as INT); _col0 ------- 1000 (1 row) select CAST(122.5001 as TINYINT); _col0 ------- 123 (1 row) 使用指数表达式时,可以将字符串转为对应类型。 示例: select CAST(152e-3 as double); _col0 ------- 0.152 (1 row)
  • 字符类型 名称 描述 VARCHAR(n) 变长字符串,n指字节长度。 CHAR(n) 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认为1。 VARBINARY 变长二进制数据。需要带上前缀X,如:X'65683F',暂不支持指定长度的二进制字符串。 JSON 取值可以是a JSON object、a JSON array、a JSON number、a JSON string、true、false or null。 STRING 兼容impala的String,底层是varchar。 BINARY 兼容hive的Binary,底层实现为varbinary。 SQL表达式中,支持简单的字符表达式,也支持Unicode方式,一个Unicode字符串是以U&为固定前缀,以4位数值表示的Unicode前需要加转义符。 -- 字符表达式 select 'hello,winter!'; _col0 ------------------ hello,winter! (1 row) -- Unicode 表达式 select U&'Hello winter \2603 !'; _col0 ------------------ Hello winter ☃ ! (1 row) -- 自定义转义符 select U&'Hello winter #2603 !' UESCAPE '#'; _col0 ------------------ Hello winter ☃ ! (1 row) VARBINARY与BINARY。 -- 创建VARBINARY类型或BINARY类型的表 create table binary_tb(col1 BINARY); -- 插入数据 INSERT INTO binary_tb values (X'63683F'); --查询数据 select * from binary_tb ; -- 63 68 3f 在做CHAR数值比较的时候,在对两个仅尾部空格数不同的CHAR进行比较时,会认为它们是相等的。 SELECT CAST('FO' AS CHAR(4)) = CAST('FO ' AS CHAR(5)); _col0 ------- true (1 row)
  • 时间和日期类型 时间和日期类型目前精确到毫秒。 表3 时间和日期类型 名称 描述 存储空间 DATE 日期和时间。仅支持ISO 8601格式:'2020-01-01' 32位 TIME 不带时区的时间(时、分、秒、毫秒) 例如:TIME '01:02:03.456' 64位 TIME WITH TIMEZONE 带时区的时间(时、分、秒、毫秒),时区用UTC值表示 例如:TIME '01:02:03.456 -08:00' 96位 TIMESTAMP 时间戳 64位 TIMESTAMP WITH TIMEZONE 带时区的时间戳 64位 INTERVAL YEAR TO MONTH 时间间隔字面量,年,月,格式: SY-M S:可选符号(+/-) Y:年数 M:月数 128位 INTERVAL DAY TO SECOND 时间间隔字面量,日,小时,分钟, 秒,精确到毫秒,格式:SD H:M:S.nnn S:可选符号(+/-) D:天数 M:分钟数 S:秒数 nnn:毫秒数 128位 示例: -- 查询日期 SELECT DATE '2020-07-08'; _col0 ------------ 2020-07-08 (1 row) -- 查询时间 SELECT TIME '23:10:15'; _col0 -------------- 23:10:15 (1 row) SELECT TIME '01:02:03.456 -08:00'; _col0 -------------- 01:02:03.456-08:00 (1 row) -- 时间间隔用法 SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3 12:15:4.111' DAY TO SECOND; _col0 ------------------------- 2015-10-22 11:15:19.111 (1 row) SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3-1' YEAR TO MONTH; _col0 ------------------------- 2018-11-18 23:00:15 (1 row) select INTERVAL '3' YEAR + INTERVAL '2' MONTH ; _col0 ------- 3-2 (1 row) select INTERVAL '1' DAY+INTERVAL '2' HOUR +INTERVAL '3' MINUTE +INTERVAL '4' SECOND ; _col0 ---------------- 1 02:03:04.000 (1 row)
  • UUID 标准UUID (Universally Unique IDentifier),也被称为GUID (Globally Unique IDentifier)。 遵从RFC 4122标准所定义的格式。 示例: select UUID '12151fd2-7586-11e9-8f9e-2a86e4085a59'; _col0 -------------------------------------- 12151fd2-7586-11e9-8f9e-2a86e4085a59 (1 row)
  • HYPER LOG LOG 基数统计。 用HyperLogLog来近似计算唯一数的计数值,其代价要远小于用count来计算。 参见HyperLogLog函数函数。 HyperLogLog A HyperLogLog sketch可以用来高效的计算distinct()的近似值。 它以一个稀疏的表征开始,然后变成一个密集的表征,此时效率将变得更高。 P4HyperLogLog 类似于A HyperLogLog sketch,但是它以一个密集的表征开始。
  • ROW ROW的字段可是任意所支持的数据类型,也支持各字段数据类型不同的混合方式。 --创建ROW表 create table row_tb (id int,col1 row(a int,b varchar)); --插入ROW类型数据 insert into row_tb values (1,ROW(1,'HetuEngine')); --查询数据 select * from row_tb; id | col1 ----|-------------- 1 | {a=1, b=HetuEngine} --字段是支持命名的,默认情况下,Row的字段是未命名的 select row(1,2e0),CAST(ROW(1, 2e0) AS ROW(x BIGINT, y DOUBLE)); _col0 | _col1 ------------------------|-------------- {1, 2.0} | {x=1, y=2.0} (1 row) --命名后的字段,可以通过域操作符"."访问 select col1.b from row_tb; -- HetuEngine --命名和未命名的字段,都可以通过位置索引来访问,位置索引从1开始,且必须是一个常量 select col1[1] from row_tb; -- 1
  • 整数类型 表1 整数类型 名称 描述 存储空间 取值范围 字面量 TINYINT 微整数 8位 -128~127 TINYINT SMALLINT 小整数 16位 -32,768 ~ +32,767 SMALLINT INTEGER 整数 32位 -2,147,483,648 ~ +2,147,483,647 INT BIGINT 大整数 64位 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 BIGINT 示例: --创建具有TINYINT类型数据的表。 CREATE TABLE int_type_t1 (IT_COL1 TINYINT) ; --插入TINYINT类型数据 insert into int_type_t1 values (TINYINT'10'); --查看数据。 SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 DROP TABLE int_type_t1;
  • 布尔类型 “真”值的有效文本值是:TRUE、't'、'true'、'1'。 “假”值的有效文本值是:FALSE、'f'、'false'、'0'。 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 示例: select BOOLEAN '0'; _col0 ------- false (1 row) select BOOLEAN 'TRUE'; _col0 ------- true (1 row) select BOOLEAN 't'; _col0 ------- true (1 row)
  • 示例 describe formatted show_table1 a; Describe Formatted Column ------------------------------ col_name a data_type integer min max num_nulls distinct_count 0 avg_col_len max_col_len num_trues num_falses comment (1 row)
  • 示例 alter table h0 add columns(ext0 string); alter table h0 add columns(new_col int not null comment 'add new column' after col1); alter table complex_table add columns(col_struct.col_name string comment 'add new column to a struct col' after col_from_col_struct);
  • 示例 SHOW STATS FOR orders; SHOW STATS FOR (SELECT * FROM orders); 在Analyze nation表之前: SHOW STATS FOR nation; column_name | data_size | distinct_values_count | nulls_fraction | row_count | low_value | high_value -------------|-----------|-----------------------|----------------|-----------|-----------|------------ name | NULL | NULL | NULL | NULL | NULL | NULL regionkey | NULL | NULL | NULL | NULL | NULL | NULL NULL | NULL | NULL | NULL | 6.0 | NULL | NULL (3 rows) 在Analyze nation表之后: Analyze nation; ANALYZE: 6 rows --查询分析后的结果 SHOW STATS FOR nation; column_name | data_size | distinct_values_count | nulls_fraction | row_count | low_value | high_value -------------|-----------|-----------------------|----------------|-----------|-----------|------------ name | 45.0 | 5.0 | 0.0 | NULL | NULL | NULL regionkey | NULL | 2.0 | 0.0 | NULL | 0 | 2 NULL | NULL | NULL | NULL | 6.0 | NULL | NULL (3 rows)
  • 描述 返回表的近似统计信息。 返回每一列的统计信息。 列 描述 column_name 列名(汇总行为NULL) data_size 列中所有值的总大小(以字节为单位) distinct_values_count 列中不同值的数量 nulls_fraction 列中值为NULL的部分 row_count 行数(仅针对摘要行返回) low_value 在此列中找到的最小值(仅对于某些类型) high_value 在此列中找到的最大值(仅适用于某些类型)
  • 描述 使用CREATE TABLE创建一个具有指定列的、新的空表。使用CREATE TABLE AS创建带数据的表。 使用可选参数IF NOT EXISTS,如果表已经存在则不会报错。 WITH子句可用于在新创建的表或单列上设置属性,如表的存储位置(location)、是不是外表(external)等。 LIKE子句用于在新表中包含来自现有表的所有列定义。可以指定多个LIKE子句,从而允许从多个表中复制列。如果指定了INCLUDING PROPERTIES,则将所有表属性复制到新表中。如果WITH子句指定的属性名称与复制的属性名称相同,则将使用WITH子句中的值。默认是EXCLUDING PROPERTIES属性,而且最多只能为一个表指定INCLUDING PROPERTIES属性。 PARTITIONED BY能够用于指定分区的列;CLUSTERED BY能够被用于指定分桶的列;SORT BY和SORTED BY能够用于给指定的分桶列进行排序;BUCKETS能够被用于指定分桶数;EXTERNAL可用于指定创建外部表;STORED AS能被用于指定文件存储的格式;LOCATION能被用于指定在HDFS上存储的路径。 想要查看支持哪些column属性,可以运行以下命令,会显示当前对接的catalog分别支持哪些列属性。 SELECT * FROM system.metadata.column_properties; 想要查看支持哪些table属性,可以运行以下命令: SELECT * FROM system.metadata.table_properties; 下表为catalog为hive时的查询结果。 SELECT * FROM system.metadata.table_properties where catalog_name = 'hive'; catalog_name property_name default_value type description hive auto_purge false boolean Skip trash when table or partition is deleted hive avro_schema_url - varchar URI pointing to Avro schema for the table hive bucket_count 0 integer Number of buckets hive bucketed_by [] array(varchar) Bucketing columns hive bucketing_version - integer Bucketing version hive csv_escape - varchar CS V escape character hive csv_quote - varchar CSV quote character hive csv_separator - varchar CSV separator character hive external_location - varchar File system location URI for external table hive format ORC varchar Hive storage format for the table. Possible values: [ORC, PARQUET, AVRO, RCBINARY, RCTEXT, SEQUENCEFILE, JSON, TEXTFILE, TEXTFILE_MULTIDELIM, CSV] hive orc_compress GZIP varchar Compression codec used. Possible values: [NONE, SNAPPY, LZ4, ZSTD, GZIP, ZLIB] hive orc_compress_size 262144 bigint orc compression size hive orc_row_index_stride 10000 integer no. of row index strides hive orc_stripe_size 67108864 bigint orc stripe size hive orc_bloom_filter_columns [] array(varchar) ORC Bloom filter index columns hive orc_bloom_filter_fpp 0.05 double ORC Bloom filter false positive probability hive partitioned_by [] array(varchar) Partition columns hive sorted_by [] array(varchar) Bucket sorting columns hive textfile_skip_footer_line_count - integer Number of footer lines hive textfile_skip_header_line_count - integer Number of header lines hive transactional false boolean Is transactional property enabled
  • 示例 创建一个新表orders,使用子句with指定创建表的存储格式、存储位置、以及是否为外表。 通过“auto.purge”参数可以指定涉及到数据移除操作(如DROP、DELETE、INSERT OVERWRITE、TRUNCATE TABLE)时是否清除相关数据: "auto.purge"='true'时,清除元数据和数据文件。 "auto.purge"='false'时,仅清除元数据,数据文件会移入HDFS回收站。默认值为“false”,且不建议用户修改此属性,避免数据删除后无法恢复。 CREATE TABLE orders ( orderkey bigint, orderstatus varchar, totalprice double, orderdate date ) WITH (format = 'ORC', location='/user',orc_compress='ZLIB',external=true, "auto.purge"=false); -- 通过DESC FORMATTED 语句,可以查看建表的详细信息 desc formatted orders ; Describe Formatted Table ------------------------------------------------------------------------------ # col_name data_type comment orderkey bigint orderstatus varchar totalprice double orderdate date # Detailed Table Information Database: default Owner: admintest LastAccessTime: 0 Location: hdfs://hacluster/user Table Type: EXTERNAL_TABLE # Table Parameters: EXTERNAL TRUE auto.purge false orc.compress.size 262144 orc.compression.codec ZLIB orc.row.index.stride 10000 orc.stripe.size 67108864 presto_query_id 20220812_084110_00050_srknk@default@HetuEngine presto_version 1.2.0-h0.cbu.mrs.320.r1-SNAPSHOT transient_lastDdlTime 1660293670 # Storage Information SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat Compressed: No Num Buckets: -1 Bucket Columns: [] Sort Columns: [] Storage Desc Params: serialization.format 1 (1 row) 创建一个新表,指定Row format: --建表时,指定表的字段分隔符为‘,’号(如果创建外表,要求数据文件中的每条记录的字段是以逗号进行分隔) CREATE TABLE student( id string,birthday string, grade int, memo string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; --建表时,指定字段分隔符为'\t',换行符为'\n' CREATE TABLE test( id int, name string , tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE; 如果表orders不存在,则创建表orders,并且增加表注释和列注释: CREATE TABLE IF NOT EXISTS orders ( orderkey bigint, orderstatus varchar, totalprice double COMMENT 'Price in cents.', orderdate date ) COMMENT 'A table to keep track of orders.'; insert into orders values (202011181113,'online',9527,date '2020-11-11'), (202011181114,'online',666,date '2020-11-11'), (202011181115,'online',443,date '2020-11-11'), (202011181115,'offline',2896,date '2020-11-11'); 使用表orders的列定义创建表bigger_orders: CREATE TABLE bigger_orders ( another_orderkey bigint, LIKE orders, another_orderdate date ); SHOW CREATE TABLE bigger_orders ; Create Table --------------------------------------------------------------------- CREATE TABLE hive.default.bigger_orders ( another_orderkey bigint, orderkey bigint, orderstatus varchar, totalprice double, ordersdate date, another_orderdate date ) WITH ( external = false, format = 'ORC', location = 'hdfs://hacluster/user/hive/warehouse/bigger_orders', orc_compress = 'GZIP', orc_compress_size = 262144, orc_row_index_stride = 10000, orc_stripe_size = 67108864 ) (1 row) 标号① 建表示例: CREATE EXTERNAL TABLE hetu_test (orderkey bigint, orderstatus varchar, totalprice double, orderdate date) PARTITIONED BY(ds int) SORT BY (orderkey, orderstatus) COMMENT 'test' STORED AS ORC LOCATION '/user' TBLPROPERTIES (orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = 'orderstatus,totalprice'); 标号② 建表示例: CREATE EXTERNAL TABLE hetu_test1 (orderkey bigint, orderstatus varchar, totalprice double, orderdate date) COMMENT 'test' PARTITIONED BY(ds int) CLUSTERED BY (orderkey, orderstatus) SORTED BY (orderkey, orderstatus) INTO 16 BUCKETS STORED AS ORC LOCATION '/user' TBLPROPERTIES (orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = 'orderstatus,totalprice'); 标号③ 建表示例: CREATE TABLE hetu_test2 (orderkey bigint, orderstatus varchar, totalprice double, orderdate date, ds int) COMMENT 'This table is in Hetu syntax' WITH (partitioned_by = ARRAY['ds'], bucketed_by = ARRAY['orderkey', 'orderstatus'], sorted_by = ARRAY['orderkey', 'orderstatus'], bucket_count = 16, orc_compress = 'SNAPPY', orc_compress_size = 6710422, orc_bloom_filter_columns = ARRAY['orderstatus', 'totalprice'], external = true, format = 'orc', location = '/user');
  • 限制 session属性可以设置bucket_count,默认值为-1,表示未设置。创建分区表时,如果bucket_count为-1且建表语句中未设置buckets,则使用默认值16。 默认外部表存储位置/user/hive/warehouse/{schema_name}/{table_name},其中{schema_name}为建表时使用的schema,{table_name}为表名。 指定属性“transactional=true”可以让表支持“原子性、一致性、隔离性、持久性”写入的事务能力,但是将表定义为事务表后,无法通过设置“transactional=false”将其退化为非事务表。 transactional='true'或 '0'在执行过程中不会进行类型转换,所以这种写法会抛出异常: Cannot convert ['true'] to boolean Cannot convert ['0'] to boolean 默认不允许向托管表(表属性external = true)插入数据,如需使用该功能,可参考注意事项,添加hive自定义属性:hive.non-managed-table-writes-enabled=true。 Mppdb有一个限制,数据库的标识符的最大长度为63,如果把标识符命名超过了最大长度,那么会被自动截取掉超出的部分,只留下最大长度的标识符。 跨域场景不支持建表。
  • 语法 ① CREATE TABLE [ IF NOT EXISTS ] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT col_comment] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [ COMMENT table_comment ] [ WITH ( property_name = expression [, ...] ) ] ② CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [COMMENT 'table_comment'] [PARTITIONED BY(col_name data_type, ....)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name, col_name, ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION 'hdfs_path'] [TBLPROPERTIES (orc_table_property = value [, ...] ) ] ③ CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [catalog_name.][db_name.]table_name ( { column_name data_type [ NOT NULL ] [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ] | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] } [, ...] ) [PARTITIONED BY(col_name data_type, ....)] [SORT BY ([column [, column ...]])] [COMMENT 'table_comment'] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION 'hdfs_path'] [TBLPROPERTIES (orc_table_property = value [, ...] ) ]
  • 前提条件 已安装ClickHouse客户端,例如客户端安装目录为“/opt/client”。 在 FusionInsight Manager已创建具有ClickHouse相关表权限和访问HDFS的权限的用户,例如:clickhouseuser。 在对接HDFS组件之前,需要注意首先确保HDFS中有对应的目录,ClickHouse的HDFS引擎只会操作文件不会创建或删除目录。 当前系统只支持部署在x86节点的ClickHouse集群对接HDFS,部署在ARM节点的ClickHouse集群不支持对接HDFS。
  • Hive权限模型 使用Hive组件,必须对Hive数据库和表(含外表和视图)拥有相应的权限。在 MRS 中,完整的Hive权限模型由Hive元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是Hive权限模型中的一种。 Hive元数据权限。 与传统关系型数据库类似,MRS的Hive数据库包含“建表”和“查询”权限,Hive表和列包含“查询”、“插入”和“删除”权限。Hive中还包含拥有者权限“OWNERSHIP”和“Hive管理员权限”。 Hive数据文件权限,即HDFS文件权限。 Hive的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。 用户对Hive数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对Hive数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“写”。 使用Manager界面图形化的角色管理功能来管理Hive数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
  • 问题 当创建了表名为table的表后,执行drop table table上报以下错误,或者执行其他操作也会出现类似错误。 16/07/12 18:56:29 ERROR SparkSQLDriver: Failed in [drop table table] java.lang.RuntimeException: [1.1] failure: identifier expected table ^ at scala.sys.package$.error(package.scala:27) at org.apache.spark.sql.catalyst.SqlParserTrait$class.parseTableIdentifier(SqlParser.scala:56) at org.apache.spark.sql.catalyst.SqlParser$.parseTableIdentifier(SqlParser.scala:485)
  • SEMI JOIN、ANTI JOIN 当一张表在另一张表找到匹配的记录之后,半连接(semi-join)返回第一张表中的记录。与条件连接相反,即使在右节点中找到几条匹配的记录,左节点的表也只会返回一条记录。另外,右节点的表一条记录也不会返回。半连接通常使用IN或EXISTS作为连接条件。 而anti-join则与semi-join相反,即当在第二张表没有发现匹配记录时,才会返回第一张表里的记录;当使用not exists/not in的时候会用到。 其他支持的条件包括如下内容: where子句中的多个条件 别名关系 下标表达式 解引用表达式 强制转换表达式 特定函数调用 目前,只在如下情况下支持多个semi/anti join表达式:第一个表中的列在其直接后续的join表达式中被查询,且不与其他join表达式有关系。 示例如下:
  • Qualifying Column Names 当JOIN的两个relation有相同的列名时,列引用必须使用relation别名(如果relation有别名)或relation名称进行限定: SELECT nation.name, region.name FROM nation CROSS JOIN region; SELECT n.name, r.name FROM nation AS n CROSS JOIN region AS r; SELECT n.name, r.name FROM nation n CROSS JOIN region r;
  • 示例 如下为示例: 查看show_table1的所有表属性 SHOW TBLPROPERTIES ----------------------------------------------------------------------------- STATS_GENERATED_VIA_STATS_TASK 'workaround for potential lack of HIVE-12730' auto.purge 'false' numFiles '0' numRows '0' orc.compress.size '262144' orc.compression.codec 'GZIP' orc.row.index.stride '10000' orc.stripe.size '67108864' presto_query_id '20230909_095107_00042_2hwbg@default@HetuEngine' presto_version '399' rawDataSize '0' totalSize '0' transient_lastDdlTime '1694253067' (1 row) 查看show_table1的压缩算法 SHOW TBLPROPERTIES show_table1('orc.compression.codec'); SHOW TBLPROPERTIES --------------------- GZIP (1 row)
  • 二进制函数 length(binary) → bigint 返回binary的字节长度。 select length(x'00141f');-- 3 concat(binary1, ..., binaryN) → varbinary 将binary1,binary2,binaryN串联起来。这个函数返回与SQL标准连接符||相同的功能。 select concat(X'32335F',x'00141f'); -- 32 33 5f 00 14 1f to_base64(binary) → varchar 将binary编码为base64字符串表示。 select to_base64(CAST('hello world' as binary)); -- aGVsbG8gd29ybGQ= from_base64(string) → varbinary 将base64编码的string解码为varbinary。 select from_base64('helloworld'); -- 85 e9 65 a3 0a 2b 95 unbase64(string) → varbinary 将base64编码的string解码为varbinary。 SELECT from_base64('helloworld'); -- 85 e9 65 a3 0a 2b 95 to_base64url(binary) → varchar 使用URL安全字符,将binary编码为base64字符串表示。 select to_base64url(x'555555'); -- VVVV from_base64url(string) → varbinary 使用URL安全字符,将base64编码的string解码为二进制数据。 select from_base64url('helloworld'); -- 85 e9 65 a3 0a 2b 95 to_hex(binary) → varchar 将binary编码为16进制字符串表示。 select to_hex(x'15245F'); -- 15245F from_hex(string) → varbinary 将16进制编码的string解码为二进制数据。 select from_hex('FFFF'); -- ff ff to_big_endian_64(bigint) → varbinary 将bigint类型的数字编码为64位大端补码格式。 select to_big_endian_64(1234); _col0 ------------------------- 00 00 00 00 00 00 04 d2 (1 row) from_big_endian_64(binary) → bigint 64位大端补码格式的二进制解码为bigint类型的数字。 select from_big_endian_64(x'00 00 00 00 00 00 04 d2'); _col0 ------- 1234 (1 row) to_big_endian_32(integer) → varbinary 将bigint类型的数字编码为32位大端补码格式。 select to_big_endian_32(1999); _col0 ------------- 00 00 07 cf (1 row) from_big_endian_32(binary) → integer 32位大端补码格式的二进制解码为bigint类型的数字。 select from_big_endian_32(x'00 00 07 cf'); _col0 ------- 1999 (1 row) to_ieee754_32(real) → varbinary 根据IEEE 754算法,将单精度浮点数编码为一个32位大端字节序的二进制块。 select to_ieee754_32(3.14); _col0 ------------- 40 48 f5 c3 (1 row) from_ieee754_32(binary) → real 对采用IEEE 754单精度浮点格式的32位大端字节序binary进行解码。 select from_ieee754_32(x'40 48 f5 c3'); _col0 ------- 3.14 (1 row) to_ieee754_64(double) → varbinary 根据IEEE 754算法,将双精度浮点数编码为一个64位大端字节序的二进制块。 select to_ieee754_64(3.14); _col0 ------------------------- 40 09 1e b8 51 eb 85 1f (1 row) from_ieee754_64(binary) → double 对采用IEEE 754单精度浮点格式的64位大端字节序binary进行解码。 select from_ieee754_64(X'40 09 1e b8 51 eb 85 1f'); _col0 ------- 3.14 (1 row) lpad(binary, size, padbinary) → varbinary 左填充二进制以使用padbinary调整字节大小。如果size小于二进制文件的长度,则结果将被截断为size个字符。size不能为负,并且padbinary不能为空。 select lpad(x'15245F', 11,x'15487F') ; -- 15 48 7f 15 48 7f 15 48 15 24 5f rpad(binary, size, padbinary) → varbinary 右填充二进制以使用padbinary调整字节大小。如果size小于二进制文件的长度,则结果将被截断为size个字符。size不能为负,并且padbinary不能为空。 SELECT rpad(x'15245F', 11,x'15487F'); -- 15 24 5f 15 48 7f 15 48 7f 15 48 crc32(binary) → bigint 计算二进制块的CRC 32值。 md5(binary) → varbinary 计算二进制块的MD 5哈希值。 sha1(binary) → varbinary 计算二进制块的SHA 1哈希值。 sha2(string, integer) → string 安全散列算法2, 是一种密码散列函数算法标准,其输出长度可以取224位,256位, 384位、512位,分别对应SHA-224、SHA-256、SHA-384、SHA512 sha256(binary) → varbinary 计算二进制块的SHA 256哈希值。 sha512(binary) → varbinary 计算二进制块的SHA 512哈希值。 xxhash64(binary) → varbinary 计算二进制块的XXHASH 64哈希值。 spooky_hash_v2_32(binary) → varbinary 计算二进制块的32位SpookyHashV2哈希值。 spooky_hash_v2_64(binary) → varbinary 计算二进制块的64位SpookyHashV2哈希值。 hmac_md5(binary, key) → varbinary 使用给定的key计算二进制块的HMAC值(采用md5)。 hmac_sha1(binary, key) → varbinary 使用给定的key计算二进制块的HMAC值(采用sha1)。 hmac_sha256(binary, key) → varbinary 使用给定的key计算二进制块的HMAC值(采用sha256)。 hmac_sha512(binary, key) → varbinary 使用给定的key计算二进制块的HMAC值(采用sha512)。 CRC32、MD5、SHA1算法在密码学场景已被攻击者破解,不建议应用于密码学安全场景。
  • Bitwise聚合函数 bitwise_and_agg(x) 描述:用补码表示输入字段x的按位与,返回类型为bigint。 select bitwise_and_agg(x) from (values (31),(32)) as t(x);-- 0 bitwise_or_agg(x) 描述:用补码表示输入字段x的按位或,返回类型为bigint。 select bitwise_or_agg(x) from (values (31),(32)) as t(x);-- 63
  • 统计聚合函数 corr(y,x) 描述:返回输入值的相关系数。 select corr(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.0 covar_pop(y, x) 描述:返回输入值的总体协方差。 select covar_pop(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y); --1.25 covar_samp(y, x) 描述:返回输入值的样本协方差。 select covar_samp(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.6666666 kurtosis(x) 描述:峰度又称峰态系数,表征概率密度分布曲线在平均值处峰值高低的特征数,即是描述总体中所有取值分布形态陡缓程度的统计量。直观看来,峰度反映了峰部的尖度。这个统计量需要与正态分布相比较。 定义上峰度是样本的标准四阶中心矩(standardized 4th central moment)。 随机变量的峰度计算方法为随机变量的四阶中心矩与方差平方的比值。 具体计算公式为: select kurtosis(x) from (values (1),(2),(3),(4)) as t(x); -- -1.1999999999999993 regr_intercept(y, x) 描述:返回输入值的线性回归截距。y是从属值。x是独立值。 select regr_intercept(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 4.0 regr_slope(y, x) 描述:返回输入值的线性回归斜率。y是从属值。x是独立值。 select regr_slope(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.0 skewness(x) 描述:返回所有输入值的偏斜度。 select skewness(x) from (values (1),(2),(3),(4)) as t(x); -- 0.0 stddev(x) 描述:stedev_samp()的别名。 stddev_pop(x) 描述:返回所有输入值的总体标准差。 select stddev_pop(x) from (values (1),(2),(3),(4)) as t(x);-- 1.118033988749895 stddev_samp(x) 描述:返回所有输入值的样本标准偏差。 select stddev_samp(x) from (values (1),(2),(3),(4)) as t(x);-- 1.2909944487358056 variance(x) 描述:var_samp()的别名。 var_pop(x) 描述:返回所有输入值的总体方差。 select var_pop(x) from (values (1),(2),(3),(4)) as t(x);-- 1.25 var_samp(x) 描述:返回所有输入值的样本方差。 select var_samp(x) from (values (1),(2),(3),(4)) as t(x);-- 1.6666666666666667
  • 跨源功能使用指导 HetuEngine能够支持多种数据源的快速联合查询并提供可视化的数据源配置、管理页面,可通过HSConsole界面快速添加如下数据源,配置数据源前请先参考HetuEngine交互查询引擎概述: 添加Hive数据源 添加Hudi数据源 添加ClickHouse数据源 添加GAUSSDB数据源 添加HBase数据源 添加跨集群HetuEngine数据源 添加IoTDB数据源 添加MySQL数据源 添加Oracle数据源 添加GBase数据源
  • 跨域关键技术和优势 无单点瓶颈:HSFabric可进行水平扩展,多通道并行传输,速率最大化,跨地域延迟不再成为瓶颈。 更好地计算资源利用:将数据压缩,序列化的任务下推到Worker并行计算。 高效序列化:优化数据序列化格式,同等数据量级下,更低的数据传输量。 流式传输:基于HTTP 2.0 stream, 保证HTTP协议通用性的同时,减少大量数据传输中RPC 重复调用。 断点续传:防止数据传输过程中连接异常断开后重传大量数据。 流量管控:支持按地区限制数据传输所占用的网络带宽,避免在跨地域有限带宽场景下因流量独占而影响其他业务的正常使用。
  • 示例 显示能够创建orders表的SQL语句: CREATE TABLE orders ( orderkey bigint, orderstatus varchar, totalprice double, orderdate date ) WITH (format = 'ORC', location='/user',orc_compress='ZLIB',external=true, "auto.purge"=false); show create table orders; Create Table ------------------------------------------------- CREATE TABLE hive.default.orders ( orderkey bigint, orderstatus varchar, totalprice double, orderdate date ) WITH ( external_location = 'hdfs://hacluster/user', format = 'ORC', orc_compress = 'ZLIB', orc_compress_size = 262144, orc_row_index_stride = 10000, orc_stripe_size = 67108864 ) (1 row)
  • 语法 [/*+ query_rewrite_hint*/] [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT ] select_expression [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ] [ HAVING condition] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC ] [, ...] ] [ OFFSET count [ ROW | ROWS ] ] [ LIMIT { count | ALL } ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } ] from_item可以是以下形式: table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] from_item join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ] table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] MATCH_RECOGNIZE pattern_recognition_specification [ [ AS ] alias [ ( column_alias [, ...] ) ] ] join_type可以是以下形式: [ INNER ] JOIN LEFT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN FULL [ OUTER ] JOIN LEFT [SEMI] JOIN RIGHT [SEMI] JOIN LEFT [ANTI] JOIN RIGHT [ANTI] JOIN CROSS JOIN grouping_element可以是以下形式: () expression GROUPING SETS ( ( column [, ...] ) [, ...] ) CUBE ( column [, ...] ) ROLLUP ( column [, ...] )
  • 回答 当Yarn配置“yarn.log-aggregation-enable”为“true”时,就开启了container日志聚合功能。日志聚合功能是指:当应用在Yarn上执行完成后,NodeManager将本节点中所有container的日志聚合到HDFS中,并删除本地日志。详情请参见配置Container日志聚合功能。 然而,开启container日志聚合功能之后,其日志聚合至HDFS目录中,只能通过获取HDFS文件来查看日志。开源Spark和Yarn服务不支持通过WebUI查看聚合后的日志。 因此,Spark在此基础上进行了功能增强。如图1所示,在HistoryServer页面添加“AggregatedLogs”页签,可以通过“logs”链接查看聚合的日志。 图1 聚合日志显示页面
共100000条