700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Hive函数(内置函数(字符串函数 数学函数 日期函数 集合函数 条件函数 聚合函数

Hive函数(内置函数(字符串函数 数学函数 日期函数 集合函数 条件函数 聚合函数

时间:2021-05-28 19:44:44

相关推荐

Hive函数(内置函数(字符串函数 数学函数 日期函数 集合函数 条件函数 聚合函数

Hive函数(内置函数和自定义函数)

一.内置函数1.字符串函数(1)ascii(2)base64(3)concat(4)concat_ws(5)format_number(6)substr,substring(7)instr(8)length(9)locate(10)printf(11)str_to_map(13)unbase64(14)upper,ucase(15)lower,lcase(16)trim,ltrim,rtrim(17)regexp_replace(18)regexp_extract(19)parse_url(20)get_json_object(21)space(22)repeat(23)lpad(24)rpad(25)split(26)find_in_set—集合查找函数(27)sentences—分词函数(28)ngrams—词频(29)context_ngrams2.类型转换函数(1)binary—二进制转换(2)cast—类型强转3.数学函数(1)round(2)floor(3)ceil(4)rand(5)exp(6)ln(7)log10,log2,log(8)pow(9)sqrt(10)bin(11)hex(12)unhex(13)conv(14)abs(15)pmod4.日期函数(1)unix_timestamp/ from_unixtime—**时间戳函数**(2)current_date—获取当前日期(3)to_date—日期时间转日期(4)获取日期中的年月/日/时/分/秒/周(5)datediff—日期之差(6)date_add/date_sub—日期增加和减少(7)其他日期函数5.集合函数6.条件函数(1)if函数(2)coalesce—非空查找函数(3)case—条件判断7.聚合函数(1)sum—求和(2)count—求数据量(3)avg—平均值(4)distinct—去重(5)min—最小值(6)max—最大值8.表生成函数(1)explode(2)json_tuple(3)parse_url_tuple(4)lateral view二.自定义函数1.自定义函数分类(1)UDF((User-Defined-Function)(2)UDAF(User-Defined Aggregation Function)(3)UDTF(User-Defined Table-Generating Functions)2.自定义函数创建流程(1)编程步骤(2)实例(3)添加jar包的几种方法3.自定义临时函数和自定义永久函数(1)临时函数(2)永久函数

一.内置函数

--显示hive下内置所有函数show functions;--查看函数的详细使用方法desc function extended 函数名;

1.字符串函数

(1)ascii

语法:ascii(string str)返回值:int说明:返回字符串str第一个字符的ascii码

--示例hive> select ascii("ba");OK98

(2)base64

语法:base64(binary bin)返回值:string说明:返回二进制bin的base编码字符串

hive> select base64(binary('test'));OKdGVzdA==

(3)concat

语法:concat(string A,string B)返回值:string说明:返回输入字符串连接后的结果,支持任意个输入字符串

hive> select concat('a','1','b');OKa1b

(4)concat_ws

语法: concat_ws(string SEP, string A, string B...)返回值:string说明:返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符--数组转换成字符串语法: concat_ws(string SEP, array<string>)返回值: string说明:返回将数组链接成字符串后的结果,SEP 表示各个字符串间的分隔符

hive> select concat_ws('---','a','1','b');OKa---1---b--列转行hive> select * from t3;OKA 1A 2A 3A 4B 2B 5B 1hive> select item ,concat_ws(",",collect_list(nums)) as num from t3 group by item;OKA 1,2,3,4B 2,5,1hive> select concat_ws('|',array('a','b','c'));OKa|b|c

(5)format_number

语法: format_number(number x, int d)返回值:string说明::将数值 x 的小数位格式化成 d 位,四舍五入

hive> select format_number(5.23456,3);OK5.235

(6)substr,substring

从1开始数

语法: substr(string A, int start),substring(string A, int start)返回值: string说明:返回字符串 A 从 start 位置到结尾的字符串语法: substr(string A, int start, int len),substring(string A, intstart, int len)返回值: string说明:返回字符串 A 从 start 位置开始,长度为 len 的字符串

hive> select substr('abcde',3);OKcdeTime taken: 0.016 seconds, Fetched: 1 row(s)hive> select substr('abcde',3,1);OKc

(7)instr

语法: instr(string str, string substr)返回值: int说明:返回字符串 substr 在 str 中首次出现的位置

hive> select instr('asdfs','f');OK4hive> select instr('asdfs','fd');OK0

(8)length

语法: length(string A)返回值: int说明:返回字符串的长度

hive> select length('abn');OK3

(9)locate

语法: locate(string substr, string str[, int pos])返回值: int说明:返回字符串 substr 在 str 中从 pos 后查找,首次出现的位置

hive> select locate('a','abcba');OK1hive> select locate('a','abcba',2);OK5

(10)printf

语法: printf(String format, Obj... args)返回值: string说明:将指定对象用 format 格式进行格式化

hive> select printf("%08x",123);OK0000007b

(11)str_to_map

语法: str_to_map(text[, delimiter1, delimiter2])返回值: map<string,string>说明:将字符串按照给定的分隔符转换成 map 结构.

hive> select str_to_map('k1:v1,k2:v2');OK{"k1":"v1","k2":"v2"}hive> select str_to_map('k1=v1,k2=v2',',','=');OK{"k1":"v1","k2":"v2"}

(13)unbase64

语法: unbase64(string str)返回值: binary说明:将给定的 base64 字符串解码成二进制

hive> select unbase64('dGVzdA==');OKtest

(14)upper,ucase

语法: upper(string A) ucase(string A)返回值: string说明:返回字符串 A 的大写格式

hive> select upper('djkFssFK');OKDJKFSSFKhive> select ucase('djkFssFK');OKDJKFSSFK

(15)lower,lcase

语法: lower(string A) lcase(string A)返回值: string说明:返回字符串 A 的小写格式

hive> select lower('djkFssFK');OKdjkfssfkhive> select lcase('djkFssFK');OKdjkfssfk

(16)trim,ltrim,rtrim

语法: trim(string A)返回值: string说明:去除字符串两边的空格语法: ltrim(string A)返回值: string说明:去除字符串左边的空格语法: rtrim(string A)返回值: string说明:去除字符串右边的空格

hive> select trim(' abc ');OKabchive> select ltrim(' abc ');OKabchive> select rtrim(' abc ');OKabc

(17)regexp_replace

语法: regexp_replace(string A, string B, string C)返回值: string说明:将字符串 A 中的符合 java 正则表达式 B 的部分替换为 C。注意,在有些情况下要使用转义字符,类似 oracle 中的 regexp_replace 函数。

--将oo和ar替换成''hive> select regexp_replace('foobar','oo|ar','');OKfb

(18)regexp_extract

语法: regexp_extract(string subject, string pattern, intindex)返回值: string说明:将字符串 subject 按照 pattern 正则表达式的规则拆分,返回 index 指定的字符。

hive> select regexp_extract('footbar','foo(.*?)(bar)',0);OKfootbarhive> select regexp_extract('footbar','foo(.*?)(bar)',1);OKthive> select regexp_extract('footbar','foo(.*?)(bar)',2);OKbar

(19)parse_url

语法: parse_url(string urlString, string partToExtract [, stringkeyToExtract])返回值: string说明:返回 URL 中指定的部分。partToExtract 的有效值为:HOST, PATH,QUERY,REF,PROTOCOL, AUTHORITY, FILE, and USERINFO.

hive> select parse_url('/path1/p.php?k1=v1&k2=v2#Ref1','HOST');hive> select parse_url('/path1/p.php?k1=v1&k2=v2#Ref1','QUERY','k1');OKv1

(20)get_json_object

语法: get_json_object(string json_string, string path)返回值: string说明:解析 json 的字符串 json_string,返回 path 指定的内容。如果输入的json 字符串无效,那么返回 NULL。

hive> select get_json_object('{"store":{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],"bicycle":{"price":19.95,"color":"red"} },"email":"amy@", "owner":"amy" } ','$.owner');OKamy

(21)space

语法: space(int n)返回值: string说明:返回长度为 n 的字符串

hive> select space(10);OKhive> select length(space(10));OK10

(22)repeat

语法: repeat(string str, int n)返回值: string说明:返回重复 n 次后的 str 字符串

hive> select repeat('abc',5);OKabcabcabcabcabc

(23)lpad

语法: lpad(string str, int len, string pad)返回值: string说明:将 str 进行用 pad 进行左补足到 len 位

--补足总长度为10hive> select lpad('abc',10,'td');OKtdtdtdtabc

(24)rpad

语法: rpad(string str, int len, string pad)返回值: string说明:将 str 进行用 pad 进行右补足到 len 位

hive> select rpad('abc',10,'td');OKabctdtdtdtTime taken: 0.026 seconds, Fetched: 1 row(s)

(25)split

语法: split(string str, string pat)返回值: array说明: 按照 pat 字符串分割 str,会返回分割后的字符串数组

hive> select split('adfsfdsts','s');OK["adf","fd","t",""]

(26)find_in_set—集合查找函数

语法: find_in_set(string str, string strList)返回值: int说明: 返回 str 在 strlist 第一次出现的位置,strlist 是用逗号分割的字符串。如果没有找到该 str 字符,则返回 0

hive> select find_in_set('ab','ef,ab,de');OK2

(27)sentences—分词函数

语法: sentences(string str, string lang, string locale)返回值: array<array<string>>说明:返回输入 str 分词后的单词数组

hive> select sentences('hello world!hello hive,hi hive,hello hive');OK[["hello","world"],["hello","hive","hi","hive","hello","hive"]]

(28)ngrams—词频

语法: ngrams(array<array<string>>, int N, int K, int pf)返回值: array<struct<string,double>>说明:与 sentences()函数一起使用,分词后,统计分词结果中一起出现频次最高的 TOP-K 结果

hive>SELECT ngrams(sentences('hello word!hello hive,hi hive,hello hive'),2,2)OK[{"ngram":["hello","hive"],"estfrequency":2.0},{"ngram":["hive","hi"],"estfrequency":1.0}]--该查询中,统计的是两个词在一起出现频次最高的 TOP-2;结果中,hello 与 hive 同时出现 2 次

(29)context_ngrams

语法: context_ngrams(array<array<string>>,array<string>, int K, int pf)返回值: array<struct<string,double>>说明:与 sentences()函数一起使用,分词后,统计分词结果中与数组中指定的单词一起出现(包括顺序)频次最高的 TOP-K 结果

hive> select context_ngrams(sentences('hello> word!hello> hive,hi> hive,hello> hive'),array('hello',null),3);[{"ngram":["hive"],"estfrequency":2.0},{"ngram":["word"],"estfrequency":1.0}]--该查询中,统计的是与’hello’一起出现,并且在 hello 后面的频次最高的TOP-3结果中,hello 与 hive 同时出现 2 次,hello 与 word 同时出现 1 次

2.类型转换函数

(1)binary—二进制转换

语法: binary(string|binary)返回值: binary说明: 将 string 类型转换为二进制

hive> select binary('charels');OKcharels

(2)cast—类型强转

语法: cast(expr as )返回值:说明: 将 expr 转换成

hive> select cast('1' as DOUBLE);OK1.0

3.数学函数

(1)round

语法:round(DOUBLE a)返回类型:DOUBLE说明:返回数字 a 四舍五入后的值语法:round(DOUBLE a, INT d)返回类型:DOUBLE说明:返回数字 a 四舍五入到小数点后 d 位的值

hive> select round(1.5);OK2.0hive> select round(1.12, 4);OK1.12hive> select round(1.12, -1);OK0.0

(2)floor

语法:floor(DOUBLE a)返回类型:bigint说明:对数字 a 向下取整

hive> select floor(1.1);OK1hive> select floor(1.6);OK1hive> select floor(-1.6);OK-2hive> select floor(-1.1);OK-2

(3)ceil

语法:ceil(DOUBLE a), ceiling(DOUBLE a)返回类型:bigint说明:对数字 a 向上取整

hive> select ceil(-1.1);OK-1hive> select ceil(-1.6);OK-1hive> select ceil(1.6);OK2hive> select ceil(1.1);OK2

(4)rand

语法:rand(), rand(INT seed)返回类型:double说明:如果 seed 不指定,则返回 0 到 1 之间的随机数

hive> select rand();OK0.5912090525580687hive> select rand(2);OK0.7311469360199058

(5)exp

语法:exp(DOUBLE a), exp(DECIMAL a)返回类型:double说明:返回 e 的 a 次方

hive> select exp(2);OK7.38905609893065

(6)ln

语法:ln(DOUBLE a), ln(DECIMAL a)返回类型:double说明:返回以 e 为底,a 的对数

hive> select ln(0.0);OKNULLTime taken: 0.015 seconds, Fetched: 1 row(s)hive> select ln(1);OK0.0

(7)log10,log2,log

语法:log10(DOUBLE a), log10(DECIMAL a)返回类型:double说明:返回以 10 为底,a 的对数语法:log2(DOUBLE a), log2(DECIMAL a)返回类型:double说明:返回以 2 为底,a 的对数语法:log(DOUBLE base, DOUBLE a),log(DECIMAL base, DECIMAL a)返回类型:double说明:返回以 base 为底,a 的对数

hive> select log10(10);OK1.0hive> select log2(10);OK3.3219280948873626hive> select log(2,4);OK2.0

(8)pow

语法:pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)返回类型:double说明:返回 a 的 p 次方

hive> select pow(2,4);OK16.0

(9)sqrt

语法:sqrt(DOUBLE a), sqrt(DECIMAL a)返回类型:double说明:返回 a 的 平方根

hive> select sqrt(4);OK2.0

(10)bin

语法::bin(BIGINT a)返回类型:STRING说明:返回 a 的 二进制表达式

hive> select bin(-8);OK1111111111111111111111111111111111111111111111111111111111111000

(11)hex

语法::hex(BIGINT a) hex(STRING a) hex(BINARY a)返回类型:STRING说明:如果参数 a 是整数,则返回十六进制表达式;如果参数 a 是字符串,则逐一将字符串中的每个字符对应的 ASCII 码以十六进制表示并返回,

hive> select hex(16);OK10hive> select hex(-1);OKFFFFFFFFFFFFFFFF

(12)unhex

语法:unhex(STRING a)返回类型:STRING说明:hex 的逆函数,以十六进制解释参数 a ,并进行 ASCII 转换,返回对应的字符

hive> select unhex('41');OKA

(13)conv

语法:conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)返回类型:STRING说明:将数字 num 或者字符串 num 从 from_base 进制转换到 to_base 进制

hive> select conv(10000000000,2,10);OK1024hive> select conv('1024', 10, 2);OK10000000000

(14)abs

语法:abs(DOUBLE a)返回类型:DOUBLE说明:返回 a 的绝对值

hive> select abs('-1212');OK1212.0

(15)pmod

语法:pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b)返回类型:INT or DOUBLE说明:返回 a 模 b 的值,pmod(a, b) 同 a % b

hive> select pmod(10,3);OK1

4.日期函数

(1)unix_timestamp/ from_unixtime—时间戳函数

--unix_timestamp日期转时间戳:从 1970-01-01 00:00:00 UTC 到指定时间的秒数--from_unixtime时间戳转日期

hive> select unix_timestamp('0915 14:23:00','yyyyMMdd HH:mm:ss');OK1505456580hive> select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss'); --获取系统当前时间unix_timestamp(void) is deprecated. Use current_timestamp instead.OK-12-17 17:32:31

(2)current_date—获取当前日期

hive> select current_date;OK-12-17

(3)to_date—日期时间转日期

hive> select to_date('-09-15 11:12:00');OK-09-15

(4)获取日期中的年月/日/时/分/秒/周

hive> with dtime as(select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')> as dt)> select> year(dt),month(dt),day(dt),hour(dt),minute(dt),second(dt),weekofyear(dt)> from dtime;unix_timestamp(void) is deprecated. Use current_timestamp instead.OK 121717361151

(5)datediff—日期之差

hive> select datediff('-09-15','-09-01');OK14

(6)date_add/date_sub—日期增加和减少

hive> select date_add('-12-17',12);OK-12-29hive> select date_sub('-12-17',12);OK-12-05

(7)其他日期函数

--查询当前系统时间(包括毫秒数)hive> select current_timestamp;OK-12-17 17:39:47.868--查询当月第几天hive> select dayofmonth(current_date);OK17--本月最后一天hive> select last_day(current_date);OK-12-31--本月第一天hive> select date_sub(current_date,dayofmonth(current_date)-1);OK-12-01Time taken: 0.033 seconds, Fetched: 1 row(s)--下个月第一天hive> select add_months(date_sub(current_date,dayofmonth(current_date)-1),1);OK-01-01

5.集合函数

6.条件函数

(1)if函数

语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)返回值: T说明: 当条件 testCondition 为 TRUE 时,返回 valueTrue;否则返回valueFalseOrNull

hive> select if(1=2,100,200);OK200

(2)coalesce—非空查找函数

语法: COALESCE(T v1, T v2, …)返回值: T说明: 返回参数中的第一个非空值;如果所有值都为 NULL,那么返回 NULL

hive> select COALESCE(null,'100','50');OK100

(3)case—条件判断

语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END返回值: T说明:如果 a 等于 b,那么返回 c;如果 a 等于 d,那么返回 e;否则返回 f语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END返回值: T说明:如果 a 为 TRUE,则返回 b;如果 c 为 TRUE,则返回 d;否则返回 e

hive> select case 100 when 50 then 'tom'> when 100 then 'mary'> else 'tim'> end;OKmaryhive> select case when 1=2 then 'tom'> when 2=2 then 'mary'> else 'tim'> end> ;OKmary

7.聚合函数

(1)sum—求和

(2)count—求数据量

(3)avg—平均值

(4)distinct—去重

(5)min—最小值

(6)max—最大值

8.表生成函数

(1)explode

语法:explode(ARRAY)说明:返回 n 行,每行对应数组中的一个元素语法:explode(MAP)说明:返回 n 行两列,每行对应每个 map 键-值,第一列是 map 的键,第二列是map 的值。(不常用)

hive> select explode(array(1,2,3,4));OK1234hive> select explode(map(1,2,3,4));OK1 23 4

(2)json_tuple

语法:json_tuple(jsonStr, k1, k2, …)说明:从一个 JSON 字符串中获取多个 key 对应的 value 并作为一个元组返回。

(3)parse_url_tuple

语法:parse_url_tuple(url, p1, p2, …)说明:返回从 URL 中抽取指定 N 部分的内容并作为一个元组返回,参数 url 是 URL字符串,而参数 p1,p2,…是要抽取的部分

(4)lateral view

udtf有一个很大的限制,在使用 UDTF 时,select 后面只能跟 UDTF,不能跟其他任何字段,否则会报错

hive> select 1,explode(array(1,2,3,4));FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions

​ lateral view 就是为了解决在 select 使用 UDTF 做查询过程中,查询只能包含单个 UDTF,不能包含其他字段、以及多个 UDTF 的问题。

​ lateral view 会将 UDTF 拆分成多行的结果放到一个支持别名的虚拟表中,然后这个虚拟表会和输入行进行 join 来达到连接 UDTF 外的 select 字段的目的。

select uid,name,tmp.cfrom courselateral view explode(kc) tmp as c;

二.自定义函数

当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。

1.自定义函数分类

(1)UDF((User-Defined-Function)

一进一出

(2)UDAF(User-Defined Aggregation Function)

多进一出,类似于:count/max/min

(3)UDTF(User-Defined Table-Generating Functions)

一进多出,如lateral view explore()

2.自定义函数创建流程

​ 编写一个 UDF,需要继承 UDF 并实现 evaluate()函数。在查询过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化。对于每行输入都会调用 evaluate()函数。而 evaluate()处理后的值会返回给 Hive。同时用户是可以重载 evaluate 方法的。Hive 会像 Java 的方法重载一样,自动选择匹配的方法。

(1)编程步骤

1)继承org.apache.hadoop.hive.ql.UDF

2)需要实现 evaluate 函数;evaluate 函数支持重载;

3)在 hive 的命令行窗口创建函数

添加jaradd jar linux_jar_path创建functioncreate [temporary] function [dbname.]function_name AS class_name;

4)调用函数

注意:UDF 必须要有返回类型,可以返回 null,但是返回类型不能为 void;

(2)实例

1)创建一个 maven 项目,添加依赖

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.0-cdh5.14.2</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1.1.0-cdh5.14.2</version></dependency></dependencies>

添加打包插件

<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><executions><execution><phase>package</phase><goals><goal>single</goal></goals></execution></executions><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin></plugins></build>

2)创建一个类

package cn.kgc.udf;import org.apache.hadoop.hive.ql.exec.UDF;public class Str2Lower extends UDF {public Text evaluate(Text s){if (s==null){return null;}return new Text(s.toString().toLowerCase());} }

3)打成 jar 包上传到服务器/opt/jars/udf.jar

4)将 jar 包添加到 hive 的 classpath

hive (default)> add jar /opt/jars/udf.jar;

5)创建临时函数与开发好的 java class 关联

hive (default)> create temporary function my_lower as "cn.kgc.udf.Str2Lower";

6)可在 hql 中使用自定义的函数 strip

hive (default)> select ename, my_lower(ename) lowername from emp;

(3)添加jar包的几种方法

1)方法一:使用 add jar 命令

在 hive 下执行:add jar /home/hadoop/DefTextInputFormat.jar;

Added [/home/hdfs/DefTextInputFormat.jar] to class path

Added resources: [/home/hdfs/DefTextInputFormat.jar]

该方法每次启动 Hive 的时候都要重新加入,退出 hive 就会失效。

2)hive-site.xml 文件配置 hive.aux.jars.path

<property><name>hive.aux.jars.path</name><value>file:///home/hadoop/DefTextInputFormat.jar,file:///jarpath/test.jar</value></property>

3)方法三:根目录${HIVE_HOME}下创建文件夹 auxlib,然后将自定义 jar文件放入该文件夹中;

3.自定义临时函数和自定义永久函数

(1)临时函数

仅对当前session(黑窗口)有效,一旦退出 HIVE 客户端,自定义临时函数即被删除

--添加 jar 包hive> add jar /opt/datas/addPrefix.jar;--创建自定义临时函数hive> create temporary function add_prefix as 'com.test.AddPrefix';--使用自定义临时函数hive> select add_prefix('aa');HIVE UDF Prefix:aa

(2)永久函数

如果需要使用自定义永久函数,可以先上传到 HDFS

[root@hadoop101 ~]# hadoop fs -put addPrefix.jar /opt/datas

--创建永久函数hive > create function add_prefix as 'com.test.AddPrefix'using jar 'hdfs:///opt/datas/addPrefix.jar'--与自定义临时函数不同,使用永久函数只能在当前数据库--这里我们放在 test 库,如果在其它库执行,会报错hive (test)> select add_prefix('aa');HIVE UDF Prefix:aahive> use tmp;hive (tmp)> select add_prefix('aa');FAILED: SemanticException [Error 10011]: Invalid function add_prefix--删除自定义永久函数hive (test)> drop function add_prefix;

Hive函数(内置函数(字符串函数 数学函数 日期函数 集合函数 条件函数 聚合函数 表生成函数)和自定义函数(自定义函数创建流程 临时函数 永久函数)))(四)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。