hivetrim(hivetrim函数)

本篇文章给大家谈谈hivetrim,以及hivetrim函数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Hive中常用的字符串操作

创建虚表:

语法: length(string A)

返回值: int

说明:返回字符串A的长度

语法: reverse(string A)

返回值: string

说明:返回字符串A的反转结果

语法: concat(string A, string B…)

返回值: string

说明:返回输入字符串连接后的结果,支持任意个输入字符串

语法: concat_ws(string SEP, string A, string B…)

返回值: string

说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符

语法: substr(string A, int start),substring(string A, int start)

返回值: string

说明:返回字符串A从start位置到结尾的字符串租谈

语法: substr(string A, int start, int len),substring(string A, int start, int len)

返回值: string

说明:返回字符串A从start位置开始,长度为len的字符串

语法: upper(string A) ucase(string A)

返回值: string

说明:返回字符串A的大写格式

语法: lower(string A) lcase(string A)

返回值: string

说明:返回字符串A的小写格式

语法: trim(string A)

返回值: string

说明:去除字符串两边的空格

语法: ltrim(string A)

返回值: string

说明:去除字符串左边的空格

语法: rtrim(string A)

返回值: string

说明:去除字符串右边的空格

语法: regexp_replace(string A, string B, string C)

返回值: string

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

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的橡带规则拆分,返回index指定的字符。

第三个参数:

0 是显示与之匹配的整个字符串

1 是显示第一个括号里面的

2 是显示第二个括号里面的字段

语法: parse_url(string urlString, string partToExtract [, string keyToExtract])

返回值: string

说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

语法: get_json_object(string json_string, string path)

返回值: string

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

语法: space(int n)

返回值: string

说明:返回长度为n的空字符串

语法: repeat(string str, int n)

返回值: string

说明:返回重复n次后的str字符串

语法: ascii(string str)

返回值: int

说明:返回字符串str第一个字符的ascii码

语法: lpad(string str, int len, string pad)

返回值: string

说明:将str进行用pad进行左补足到len位

语法: rpad(string str, int len, string pad)

返回值: string

说明:将str进行用pad进行右补足到len位

语法: split(string str, string pat)

返回值: array

说明: 按照pat字符串分割str,会返回分割后的字符串数组

语法: find_in_set(string str, string strList)

返回值: int

说明: 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0

返回:int。substr在str中第一次出现的位置,若任何参数为null返回null,若substr不在str中返回0,Str中第一个字符的位置为1

说明:C1 被搜索的字符串

C2 希望搜索的字符串

I 搜索的开始位置,默认为1

J 出现的位置,默认为1

24、使用两个分隔符将文本拆分为键值对:str_to_map(text[, delimiter1, delimiter2])

返回:map

Delimiter1将文本分成K-V对,Delimiter2分割每个K-V对。对于delimiter1默认分隔符是',',对于delimiter2默认分隔符是'='

25、unix_timestamp() 返回当前时间戳。另外,current_timestamp() 也有同样作用。

unix_timestamp(string date) 返回 date 对应的时间戳,date 格式必须为 yyyy-MM-dd HH:mm:ss。

unix_timestamp(string date, string format) 返回 date 对应的时间戳,date 格式由 format 指定。

26、from_unixtime(int/bigint timestamp) 返回 timestamp 时间戳对应的日期,格式为 yyyy-MM-dd HH:mm:ss。

from_unixtime(int/bigint timestamp, string format) 返回 timestamp 时间戳对应的日期,格式由 format 指定。

有i的英文单词,3-4个字母组成的

hike hide hint hive fair foil hail firm emit dive diet coin clip avid bill axis amid aim acid bike live life lift ice sit item big bid bill big bind bit bird bias bite cite city die diet eire file fill film find fire fit fix fine gift gild gin girl dig gig gina gist give him hide high hike hill hint hip his hit

jibe jill jim jinx kick kid kids kill kind kiss kit

kit lie life lift like line link list mild mill milk mine mind miss nice nick nil nine nip pick pig pile pin pine pink pipe piss pit pity qib qil qis qiz

rib rice ride rim rior rip ripe risk rise sign

sick sick sink site size tick tie till time tilt tin tiny tip tire tile uia uic uim uio uip uis uit

uiuc via vice view visa wide will wine wing wipe wire

wise wit with xiy yin yip yird zion zip zinc

正在背单词,三四个字母的不是很多的~~

[img]

如何使用 Spark SQL

一、启动方法

/data/spark-1.4.0-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2

注:/data/spark-1.4.0-bin-cdh4/为spark的安装路径

/data/spark-1.4.0-bin-cdh4/bin/spark-sql –help 查看启动选项

--master MASTER_URL 指定master url

--executor-memory MEM 每个executor的内存,默认为1G

--total-executor-cores NUM 所有executor的总核数

-e quoted-query-string 直接执行查询SQL

-f filename 以文件方式批量执行SQL

二、Spark sql对hive支持的功能

1、查询语句:SELECT GROUP BY ORDER BY CLUSTER BY SORT BY

2、hive操作运算:

1) 关搏漏系运算:= ==, , , , =, =

2) 算术运算:+, -, *, /, %

3) 逻辑运算:AND, , OR, ||

4) 复杂宴棚的数据结构

5) 数学函数:(sign, ln, cos, etc)

6) 字符串函数:

3、 UDF

4、 UDAF

5、 用户定义的序列化格式

6、join操作:JOIN {LEFT|RIGHT|FULL} OUTER JOIN LEFT SEMI JOIN CROSS JOIN

7、 unions操作:

8、 子查询: SELECT col FROM ( SELECT a + b AS col from t1) t2

9、Sampling

10、 Explain

11、 分区表

12、 视图

13、基祥烂 hive ddl功能:CREATE TABLE、CREATE TABLE AS SELECT、ALTER TABLE

14、 支持的数据类型:TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMPDATE ARRAY MAP STRUCT

三、Spark sql 在客户端编程方式进行查询数据

1、启动spark-shell

./spark-shell --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2

2、编写程序

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val df = sqlContext.read.json("../examples/src/main/resources/people.json")

查看所有数据:df.show()

查看表结构:df.printSchema()

只看name列:df.select("name").show()

对数据运算:df.select(df("name"), df("age") + 1).show()

过滤数据:df.filter(df("age") 21).show()

分组统计:df.groupBy("age").count().show()

1、查询txt数据

import sqlContext.implicits._

case class Person(name: String, age: Int)

val people = sc.textFile("../examples/src/main/resources/people.txt").map(_.split(",")).map(p = Person(p(0), p(1).trim.toInt)).toDF()

people.registerTempTable("people")

val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age = 13 AND age = 19")

2、parquet文件

val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")

3、hdfs文件

val df = sqlContext.read.load("hdfs://namenode.Hadoop:9000/user/hive/warehouse/spark_test.db/test_parquet/part-r-00001.gz.parquet")

4、保存查询结果数据

val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")

df.select("name", "favorite_color").write.save("namesAndFavColors.parquet“)

四、Spark sql性能调优

缓存数据表:sqlContext.cacheTable("tableName")

取消缓存表:sqlContext.uncacheTable("tableName")

spark.sql.inMemoryColumnarStorage.compressedtrue 当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。

spark.sql.inMemoryColumnarStorage.batchSize 10000 柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险

hive怎么将字符型转为数值型

hive字符串函数

1. 字符串长度函数:length

语法: length(string A)

返回值: int

说明:返回字符串A的长度

举例:

hive select length('桥搜abcedfg') from lxw_dual;

7

2. 字符串反转函数:reverse

语法: reverse(string A)

返回值: string

说明:返回字符串A的反转结果

举例:

hive select reverse(abcedfg') from lxw_dual;

gfdecba

3. 字符串连接函数:concat

语法: concat(string A, string B…)

返回值: string

说明:返回输入字符串则大连接后的结果,支持任意个输入字符串

举例:

hive select concat('abc','def','gh') from lxw_dual;

abcdefgh

4. 带分隔符字符串连接函数:concat_ws

语法: concat_ws(string SEP, string A, string B…)

返回值: string

说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符

举例:

hive select concat_ws(',','abc','def','gh') from lxw_dual;

abc,def,gh

5. 字符串截取函数:substr,substring

语法: substr(string A, int start),substring(string A, int start)

返回值: string

说明:返回字符串A从start位置到结尾的字符串

举例:

hive select substr('abcde',3) from lxw_dual;

cde

hive select substring('abcde',3) from lxw_dual;

cde

hive selectsubstr('abcde',-1) from lxw_dual; (和ORACLE相同)

e

6. 字符串截取函数:substr,substring

语法: substr(string A, int start, int len),substring(string A, intstart, int len)

返回值: string

说明:返回字符串A从start位置开始,长度为len的字符串

举例:

hive select substr('abcde',3,2) from lxw_dual;

cd

hive select substring('abcde',3,2) from lxw_dual;

cd

hiveselect substring('abcde',-2,2) from lxw_dual;

de

7. 字符串转大写函数孙消竖:upper,ucase

语法: upper(string A) ucase(string A)

返回值: string

说明:返回字符串A的大写格式

举例:

hive select upper('abSEd') from lxw_dual;

ABSED

hive select ucase('abSEd') from lxw_dual;

ABSED

8. 字符串转小写函数:lower,lcase

语法: lower(string A) lcase(string A)

返回值: string

说明:返回字符串A的小写格式

举例:

hive select lower('abSEd') from lxw_dual;

absed

hive select lcase('abSEd') from lxw_dual;

absed

9. 去空格函数:trim

语法: trim(string A)

返回值: string

说明:去除字符串两边的空格

举例:

hive select trim(' abc ') from lxw_dual;

abc

10. 左边去空格函数:ltrim

语法: ltrim(string A)

返回值: string

说明:去除字符串左边的空格

举例:

hive select ltrim(' abc ') from lxw_dual;

abc

11. 右边去空格函数:rtrim

语法: rtrim(string A)

返回值: string

说明:去除字符串右边的空格

举例:

hive select rtrim(' abc ') from lxw_dual;

abc

12. 正则表达式替换函数:regexp_replace

语法: regexp_replace(string A, string B, string C)

返回值: string

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

举例:

hive select regexp_replace('foobar', 'oo|ar', '') from lxw_dual;

fb

13. 正则表达式解析函数:regexp_extract

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

举例:

hive select regexp_extract('foothebar', 'foo(.*?)(bar)', 1) fromlxw_dual;

the

hive select regexp_extract('foothebar', 'foo(.*?)(bar)', 2) fromlxw_dual;

bar

hive select regexp_extract('foothebar', 'foo(.*?)(bar)', 0) fromlxw_dual;

foothebar

注意,在有些情况下要使用转义字符,下面的等号要用双竖线转义,这是java正则表达式的规则。

select data_field,

regexp_extract(data_field,'.*?bgStart\\=([^]+)',1) as aaa,

regexp_extract(data_field,'.*?contentLoaded_headStart\\=([^]+)',1) as bbb,

regexp_extract(data_field,'.*?AppLoad2Req\\=([^]+)',1) as ccc

from pt_nginx_loginlog_st

where pt = '2012-03-26'limit 2;

14. URL解析函数:parse_url

语法: parse_url(string urlString, string partToExtract [, stringkeyToExtract])

返回值: string

说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

举例:

hive selectparse_url(';k2=v2#Ref1', 'HOST') fromlxw_dual;

facebook.com

hive selectparse_url(';k2=v2#Ref1', 'QUERY','k1') from lxw_dual;

v1

15. json解析函数: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@only_for_json_udf_test.net",

"owner":"amy"

}

','$.owner') from lxw_dual;

amy

16. 空格字符串函数:space

语法: space(int n)

返回值: string

说明:返回长度为n的字符串

举例:

hive select space(10) from lxw_dual;

hive select length(space(10)) from lxw_dual;

10

17. 重复字符串函数:repeat

语法: repeat(string str, int n)

返回值: string

说明:返回重复n次后的str字符串

举例:

hive select repeat('abc',5) from lxw_dual;

abcabcabcabcabc

18. 首字符ascii函数:ascii

语法: ascii(string str)

返回值: int

说明:返回字符串str第一个字符的ascii码

举例:

hive select ascii('abcde') from lxw_dual;

97

19. 左补足函数:lpad

语法: lpad(string str, int len, string pad)

返回值: string

说明:将str进行用pad进行左补足到len位

举例:

hive select lpad('abc',10,'td') from lxw_dual;

tdtdtdtabc

注意:与GP,ORACLE不同,pad 不能默认

20. 右补足函数:rpad

语法: rpad(string str, int len, string pad)

返回值: string

说明:将str进行用pad进行右补足到len位

举例:

hive select rpad('abc',10,'td') from lxw_dual;

abctdtdtdt

21. 分割字符串函数: split

语法: split(string str, stringpat)

返回值: array

说明: 按照pat字符串分割str,会返回分割后的字符串数组

举例:

hive select split('abtcdtef','t') from lxw_dual;

["ab","cd","ef"]

22. 集合查找函数: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') from lxw_dual;

2

hive select find_in_set('at','ef,ab,de') from lxw_dual;

trim为什么去除不掉字符两边的空格

trim只能去掉你的字符串最左边和最右边的空格,中间的空格是去不掉的棚此铅;你是想要去掉中间的空格吧,如果扒做实在想去掉链好可以尝试用replace方法把空格替换掉

查询hive中有哪些自定义函数

如何在HIVE中使用自己定义的函数,可以有几种方式:

1.在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数

2.在进入HIVE会话之前先自动执行创建function,不用用户手工创建

3.把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数,这样就不需要create temporary function

--------------------------------------------------------------------------------

1.在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数

hive ADD JAR /home/hugh.wangp/UDFMd5.jar;

Added /home/hugh.wangp/UDFMd5.jar to class path

hive CREATE TEMPORARY FUNCTION udfmd5 AS 'udf.UDFMd5';

OK

Time taken: 0.014 seconds

hive select udfmd5('a') from dual;

OK

0cc175b9c0f1b6a831c399e269772661

这种方式的弊端是:每次打开新的会话,就要重新执行一遍如上的add jar和create temporary function的命令。对普通的业务分析人员未免要求太高。第二种方法可以把业务人员释放出来

--------------------------------------------------------------------------------

2.在进入HIVE会话之前先自动执行创建function

HIVE命令有个参数-i:在进入会话,待用户厅闭培输入自己的HQL之前,先执行-i的参数。我们只需要把add jar和create temporary function的命令写到一个文件中,并把这个文件传到-i的参数,如此一来省去了每次要手工创建的工作。

但是这种方式也有个弊端,当我增添HIVE的gateway,就要拷贝一份这个文件,有时候遗漏真是不可避免的。第三种方法应该就是一个终极扮唯方案,只要HIVE本身代码不做修改,或者不删除特定的功能,这个函数就态迟能一直用,而且可以把他作为HIVE的默认函数那样使用

--------------------------------------------------------------------------------

3.把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数

a.编写自己的UDF/UDAF/UDTF,并把代码放到$HIVE_HOME/src/ql/src/java/org/apache/Hadoop/hive/ql/udf/路径下

b.修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java

以HIVE自带函数Trim()举例,自定义函数操作一样。

第一步:

写UDF代码UDFTrim.java并放到$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java

第二步:

修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件

a.import org.apache.hadoop.hive.ql.udf.UDFTrim;

b.registerUDF("trim", UDFTrim.class, false);

虽然这种方法是一劳永逸的方法,但是一旦错了,对整个HIVE使用都是灾难性的,所以不是特别通用的自定义函数还是采用前两种,一旦通用的自定义函数累计到一定程度,再去采用第三种方法。

更多相关内容可参考

关于hivetrim和hivetrim函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表