然怎么也登不上wwWwww.84fq.comcom页面了,是不是www.84fq.com网络的故障原因

404 Not Found
404 Not Found
The requested URL was not found on this server.
您要找的内容已被删除直投20个月即收获IPO,这家险资要做业内最懂GP的LP - 焦点企业对话|猎头资讯|职业经理人周刊|金令牌职业经理人俱乐部
直投20个月即收获IPO,这家险资要做业内最懂GP的LP &
& 微信:AirPnP &
&&& && && & &
于外界对险资参与股权投资缺乏专业性的质疑,张平一笑置之:“基于我,以及团队在投资行业多年的深耕及资源积累,百年人寿有把握和决心做最懂 GP的LP。
300-600万50-70万 150-200万 400-600万 300-600万
60-120万 80万+ 香港80-200万 香港
日,嘉泽新能(601619)成功登陆证券交易所,截止至8月31日收盘,其已收获16个一字涨停板,股价从发行价1.26元/股,最高飙升至13.78元/股,市值一度已超过260亿元。
这意味着不到3岁的百年人寿保险股权投资部(以下简称百年人寿)首个直投项目即宣告成功上市。
2014年8月、12月,国务院与保监会分别发布《国务院关于加快发展现代保险服务业的若干意见》、《中国保监会关于保险资金投资创业投资基金有关事项的通知》,鼓励和允许保险资金投资创业投资基金,放开了险资直接或间接投资创投企业或基金的途径。
在此背景下,2014年末,百年人寿保险股份有限公司成为第一批成立股权投资部的险企,开展直投和LP业务。2015年4月,张平加入并担任百年人寿股权投资部总经理;11月,他就主导完成百年人寿斥资数亿元重仓投资嘉泽新能近15%的股份,不到两年即实现投资浮盈超20亿。
潜行中国投资与并购行业15年
(图为百年人寿股权投资部总经理张平)
名校出身,10余年中、日、美跨国投行、投资生涯,张平的成长经历正是中国新时代商界顶级精英的典型成长史。
1991年,张平考入复旦大学高分子材料系,大学期间接触到很多来复旦学习中文的留学生,开始对金融行业产生了兴趣。在日本工作几年后他进入芝加哥大学攻读MBA,此后很自然进入了投资和投行的圈子。
2002年,张平加入日本新生银行,作为最早代表日本公司开展投行业务以及不良资产收购业务的中国人,负责日本本土的并购。在新生银行工作的两年间,张平开始与中国建立业务关系,其中包括带着团队参与了华融不良资产针对国际投资人的第二次公开竞价。
2004年,全球最大的金融集团东京三菱(日联)银行计划来中国开展业务。有一天,三菱董事长通过关系找到张平,问刚过而立之年的张平是否愿意到中国开展业务?“这是一个很有挑战性且能学以致用的机会,彼时张平毫不迟疑地就接受了这个offer。”
于是,张平只身归国,在组建了三菱日联投行办公室,并担任兼总裁。4年间管理了1亿美元,完成了15个项目的投资,5个实现IPO,其中包含江西赛维LDK、A8音乐、海辉HiSoft等投资和退出,味千拉面在香港的上市,以及无锡尚德对日本知名光伏企业MSK的并购。
此后,张平以第一个大陆籍合伙人的身份加入美国老牌PE安盈投资(AEA Invesrors,由洛克菲勒和沃尔伯格家族在1968年创立),这段经历让他和世界顶尖投资人一起参与投资工作,共同管理基金,也沉淀了深厚的价值投资理念体系。张平回忆称:“AEA的投资理念中包含重要的一点:投资就是要为投资标的创造价值。未来对经理人的要求除了才智、战略能力、对社会的敏感、对政治的成熟、放眼世界的意识、以及最重要的是在矛盾的变化中保持冷静的能力。”
谈及为何从日本亚洲投资(JAIC)管理合伙人职位离职,加入百年人寿,张平这样告诉投资界(微信ID:pedaily2012):“离开AEA后,我选择了与JAIC基金合作,作为曾经投资过阿里巴巴、迈瑞等知名企业的老牌基金,JAIC在中国也有不少子基金,当时我主要管理苏州的美元和人民币基金的投资,期间也成功将苏州民营资本引进到日本,正好也赶上了安倍时期的量化宽松政策,所有资产加速增值。当时也深深意识到了保险跟PE、GP合作的大趋势,而百年有LP业务和直投的双重诉求,这与我的兴趣点、多年的工作优势非常吻合。多年所积累沉淀下来的人脉、行业资源,让我不管是做资产配置、寻找优质GP,还是直投各种项目,都能得心应手。”
张平自评称:“过往的工作履历令我低调保守、思维缜密、做事严谨。”这恰好与目前险企参与股权投资的方式有异曲同工之妙。
做最懂GP的LP
“我们的目标是在保监会规定投资范围内做好长期回报与短期回报的配置。同时通过直投及投资基金与百年的主业人寿保险实现协同。”张平对投资界(微信ID:pedaily2012)表示。
基于这个目标,百年人寿股权投资部主要有两部分业务:直接投资(VC/PE业务)、间接投资(LP业务)。
百年人寿的LP业务始于2014年,截止至目前,已经投资了多家细分赛道中有着出色业绩的专业型基金,百年保险也是不少专业型基金的第一个保险LP,其中包括生命健康领域中的通和毓承基金、医疗服务领域中的千骥资本,物流消费领域中的钟鼎创投,以及科技创新领域中的国科嘉和基金,在直投项目上也和基金有着良好的互动。除此之外,百年人寿也配置了多家业内的知名基金包括:中信产业基金、红杉资本中国基金、经纬创投、鼎晖投资、赛富亚洲、君联资本、同创伟业、启明创投等20多支。
对所投基金的规模,张平有自己独特的选择逻辑:“在这个市场上,基金的投资能力和其募资能力并不一定成正比,不少基金规模过大,子弹充裕,可钱太多只会导致对原来可投可不投的项目被动进行投资,最终在拉低了投资收益率的同时还增加了风险。百年人寿理想中的基金是在某个专业领域中摸爬滚打多年,有着深厚的行业积累和人脉资源,最理想的基金规模是10-20亿元左右,这也是最有可能获得极高的超额收益的边界。”
在所投行业的选择方面,百年人寿的LP及直投业务,都倾向于投资医疗、清洁能源、节能环保、消费升级等保监会支持的领域。
对于所投基金的选择,张平称主要考察两方面,首先会深度研究GP的历史数据,包括过往回报、基金分配情况等。“我们甚至会对每个项目进行详细剖析。”
其次,投资行业是以人为本的,即使是再大牌、排名再高的机构,也会考察该支基金具体是谁在负责。“我们最喜欢每个细分赛道内最专业的投资人。基于我15年的从业经验,我有足够的经验和能力可以判断出这个人能否管好这支基金。”
作为最早几个险资参与股权投资的实践者之一,张平告诉投资界,相对于市场化的母基金和政府引导基金,百年人寿的LP业务优势明显:
第一,险资的钱是长线、稳定、可持续的。张平在与GP沟通时经常会告诉他们,保费收入从结构来看,增长是持续的,即使有波动幅度也不会太大。
第二,百年人寿可以帮助GP对接险资LP资源。作为险资开展LP业务的先行者,百年人寿股权投资部广受关注,所以“我们也愿意帮助GP引荐给其他险资LP。”
第三,与主营保险业务及直投项目可以良性互动。作为投后管理的一部分,其GP所投项目可与其保险业务及直投项目进行业务对接和互动,在生态圈里会尽最大可能为GP提供一些帮助,这也是多赢的选择。
第四,除了提供资金之外,张平还会给一些遇到问题的GP出谋划策,充分利用现有或过往的工作经验、人脉资源等。
而对于外界对险资参与股权投资缺乏专业性的质疑,张平一笑置之:“基于我,以及团队在投资行业多年的深耕及资源积累,百年人寿有把握和决心做最懂 GP的LP。”
直投偏好“小而美+重仓投资”
直投方面,百年人寿2年间已经投出了10多亿元,每年只参与2-3个项目,也有过一些不错的机会,但出于谨慎性原则,看得不够清楚时也只能忍痛割爱。“但这几年运气也算不错,每年都为公司做成了几单至少现算还比较满意的直投项目。”
张平认为,投资唯一的本事是实现高额的投资回报。
百年人寿股权投资的重点并不是选择又大又贵的公开项目。“毕竟这个行业还是依赖于信息不对称或者与众不同的判断视角来赚钱。我们更喜欢小而美的项目。在成长性和估值维度都有明确优势的标的,可能的话,我们会重仓进行投资。”
百年人寿从不追逐市场热点,不喜欢炒作概念,反而更看好踏实稳健、盈利可观、高成长性的PE项目。
“我们会把底线守得很好。目前最好的项目是嘉泽新能,上市后的账面回报已经达到了6-7倍。”这样的回报倍数也是在项目投资前,充分考量了项目估值和成长性后的投资成果。
这次投资也算是机缘巧合。彼时,嘉泽新能正面临着上市,需要调整股权结构、引入外部投资。张平第一时间与嘉泽新能董事长见了一面,此后对公司情况、业务特点、所处行业都进行了深入的了解和研究。
张平通过调研精准判断,嘉泽新能是不可多得的优质资产,业绩非常好,很多场景可以与百年人寿的保险业务产生联动。“所以我们很快就做出决策,一定要投资。” 最终,百年人寿和高盛联手投资了这家民营风力发电的龙头公司。
事实也最终证明,张平这一决策判断是对的。目前,嘉泽新能已成功上市,百年人寿还有多家正在排队IPO的被投公司。“除了IPO,我们也对接产业资源,通过并购退出。”张平在简单叙述中无形透露出了满满的自信。
除了嘉泽新能,国科恒泰也是一个典型案例。2016年6月,百年人寿张平联合国科嘉和、通和资本、君联资本、北极光创投、山蓝资本等业内知名基金共同投资了国科恒泰B轮。
这是一个做高端医疗耗材包括心脏支架、骨科关节等的第三方专业物流平台和综合服务商。当时因为张平投资的GP接触到这个项目,在与国科恒泰进行深入沟通后,张平认识到这个领域市场很大。“从百年人寿保险的角度,高端医疗耗材与寿险产品很有关联,我们还可以设计相关保险产品。”
那么百年人寿是如何做投后管理的呢?张平认为主要有两点:一是对接保险端的资源,实现共赢;二是物色海外的并购标的,完成并购整合。这也正好和其多年的海外并购经验完美匹配。
险资股权的市场化运作
投资基金、直投业务都做,势必要考虑二者的配置问题。
张平表示,从稳健的角度出发,目前投基金(GP业务)多一些,但随着最近两年直投项目不断IPO成功,并取了较好的回报,未来肯定会调整二者配比,直投项目的资金可能要高于投基金的资金。
目前,百年人寿股权投资部的资金来源全部为公司的保费,张平已经在规划,把股权投资打造成百年保险资管的特色,进行市场化运作,未来可能会向其他保险公司、甚至向社会募资。“很多保险公司是不投股权的,但是他们可以来买我们的产品。我们会试着把这个业务越做越大。”
张平一直反复强调:“险资的钱都是老百姓的养老钱,我们用这些钱做投资,一定是保守谨慎的,不容有失。”保险的容错率极低,而百年人寿也会努力秉承着谨慎的态度做好未来的股权投资。
(来源:投资界)
我们尊重原创者版权,除非我们确实无法确认作者以外,我们都会注明作者和来源。在此向原创者表示感谢。本网转载文章完全是为了内部学习、研究之非商业目的,若是涉及版权等问题,烦请联系
或致电 010- 删除,谢谢!
发表评论:
匿名发表 验证码:
发帖须知:
一、请遵守中华人民共和国有关法律法规、及。
二、请注意语言文明,尊重网络道德,并承担一切因您的行为而直接或间接引起的法律责任。
三、管理员有权保留或删除其管辖留言中的任意内容。
四、您在本站发表的言论,本站有权在网站内转载或引用。
五、发表本评论即表明您已经阅读并接受上述条款。
□金融投资行业相关资讯&?
?□金融投资行业相关职位&??????????□金融投资行业相关企业??????????□十大猎头公司推荐金领职位??????????
Copyright& 版权所有 &猎头服务 微信:AirPnP
TEL:010- &
& 京公网安备Hive入门培训
Hive数据类型
基础数据类型:
TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。
复杂数据类型:
包括ARRAY(数组),MAP(字典),STRUCT(结构体),UNION(联合体),这些复杂类型是由基础类型组成的。
ARRAY:ARRAY类型是由一系列相同数据类型元素组成的,这些元素可以通过下标来访问。比如有一个ARRAY类型的变量fruits,它是由[&apple&,&orange&,&mango&]组成,那么可以通过fruits[1]来访问orange;
MAP:MAP包含key-&value键值对,可以通过key来访问元素。比如&userlist&是一个map类型(其中username是key,password是value),那么我们可以通过userlist[&username&]来得到这个用户对应的password;
STRUCT:STRUCT可以包含不同数据类型的元素。这些元素可以通过点的方式来得到,比如user是一个STRUCT类型,那么可以通过user.address得到这个用户的地址。
UNION: UNIONTYPE
Array演示:
create table test
name string,
value array
) row format delimited
fields terminated by '|'
collection itemsterminated by ',';
文件:array.txt
bigdata|spark,hadoop
warehouse|hive,impala,hbase
load data local inpath'/hadoop/ylxsource/myspark/testdata/array.txt'
select name, value[0]
create tabletest_map(name string, value map)
row format delimited
fields terminated by '|'
collection itemsterminated by ','
map keys terminated by':';
文件:map.txt
bigdata|Spark:95,Hadoop:85
warehouse|Hive:80,Impala:70,HBase:90
load data local inpath'/hadoop/ylxsource/myspark/testdata/map.txt' into table test_
select name,value[&Spark&] from test_
Struct演示:
create tabletest_struct(id int,name struct)
row format delimited
fields terminated by '|'
collection itemsterminated by ',';
文件:struct.txt
1|Spark,100
load data local inpath '/hadoop/ylxsource/myspark/testdata/struct.txt'into table test_
select id, name.bigdatafrom test_
Union演示:
create tabletest_union(id int,name map<string,array&)</string,array
<string,array
row format delimitedfields terminated by &#39;|&#39;
collection items terminatedby &#39;,&#39;
map keys terminated by&#39;:&#39;;
1|Spark:95,10,85
2|Hadoop:85,20,65
Hive文件格式
1. Textfile
Hive默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
可结合Gzip、Bzip2、Snappy等使用(自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。
2. Sequencefile
Hadoop API提供的一种二进制文件支持,它将数据(key,value)的形式序列化到文件中,其具有使用方便、可分割、可压缩的特点。SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。RECORD压缩率低,一般建议使用BLOCK压缩。
RCFile是Hive推出的一种专门面向列的数据格式。 它遵循&先按列划分,再垂直划分&的设计理念。
当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。需要说明的是,RCFile在map阶段从远端拷贝仍然是拷贝整个数据块,并且拷贝到本地目录后,RCFile并不是真正直接跳过不需要的列,并跳到需要读取的列,而是通过扫描每一个row group的头部定义来实现的。
但是在整个HDFS Block 级别的头部并没有定义每个列从哪个row group起始到哪个row group结束。所以在读取所有列的情况下,RCFile的性能反而没有SequenceFile高。
Hive命令行常见操作
l 查看所有
l 使用数据库
l 查看数据库信息
l 查看当前使用的数据库
set hive.cli.print.current.db=
l 显示列头
set hive.cli.print.header=
l 创建数据库
l 删除数据库
如果数据库不为空,则使用cascade关键字:
drop database IF EXISTS
l 查看数据库的表
show tables like &#39;*test*&#39;;
l 获取表信息
CREATE[TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS][db_name.]table_name -- (Note: TEMPORARY available inHive 0.14.0 and later)
[(col_namedata_type [COMMENT col_comment], ...)]
[COMMENTtable_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTEREDBY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTOnum_buckets BUCKETS]
[SKEWEDBY (col_name, col_name,...) -- (Note: Available in Hive 0.10.0 and later)]
ON((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STOREDAS DIRECTORIES]
[ROWFORMAT row_format]
[STOREDAS file_format]
|STORED BY &#39;storage.handler.class.name&#39; [WITH SERDEPROPERTIES (...)] -- (Note: Available inHive 0.6.0 and later)
[LOCATIONhdfs_path]
[TBLPROPERTIES(property_name=property_value, ...)] -- (Note: Available inHive 0.6.0 and later)
[ASselect_statement]; -- (Note: Available in Hive 0.5.0 not supported for external tables)
CREATE[TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKEexisting_table_or_view_name
[LOCATION hdfs_path];
:primitive_type
|array_type
|struct_type
|union_type -- (Note: Available in Hive 0.7.0 and later)
primitive_type
|BINARY -- (Note: Available inHive 0.8.0 and later)
|TIMESTAMP -- (Note: Available in Hive 0.8.0 and later)
|DECIMAL -- (Note: Available inHive 0.11.0 and later)
|DECIMAL(precision, scale) -- (Note: Available inHive 0.13.0 and later)
|DATE -- (Note: Available in Hive 0.12.0 and later)
|VARCHAR -- (Note: Available inHive 0.12.0 and later)
|CHAR -- (Note:Available in Hive 0.13.0 and later)
array_type
:ARRAY & data_type &
:MAP & primitive_type, data_type &
struct_type
:STRUCT & col_name : data_type [COMMENT col_comment], ...&
union_type
:UNIONTYPE & data_type, data_type, ... & -- (Note: Available inHive 0.7.0 and later)
row_format
:DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
[MAPKEYS TERMINATED BY char] [LINES TERMINATED BY char]
[NULLDEFINED AS char] -- (Note: Available in Hive 0.13 and later)
|SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value,property_name=property_value, ...)]
file_format:
:SEQUENCEFILE
|TEXTFILE -- (Default, depending onhive.default.fileformat configuration)
|RCFILE -- (Note: Available inHive 0.6.0 and later)
|ORC -- (Note: Available inHive 0.11.0 and later)
|PARQUET -- (Note: Available inHive 0.13.0 and later)
|AVRO -- (Note:Available in Hive 0.14.0 and later)
|INPUTFORMAT input_format_classname OUTPUTFORMAToutput_format_classname
& 用户可以用 IF NOT EXIST 选项来忽略这个异常。
& EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
& LIKE允许用户复制现有的表结构,但是不复制数据。
& 用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。
& 如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。
& 有分区的表可以在创建的时候使用 PARTITIONED BY 语句。一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下。而且,表和分区都可以对某个列进行 CLUSTERED BY 操作,将若干个列放入一个桶(bucket)中。也可以利用SORT BY 对数据进行排序。这样可以为特定应用提高性能。
& 表名和列名不区分大小写,SerDe 和属性名区分大小写。表和列的注释是字符串
SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化。
l 加载数据
LOAD DATA [LOCAL] INPATH &#39;filepath&#39; [OVERWRITE]INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
create table par_table
type string,
value string
partitioned by(data_date string, posstring)
clustered by(id) sorted by(value)into 32 buckets
row format delimited
fields terminated by &#39;|&#39;
lines terminated by &#39;\n&#39;
set hive.enforce.bucketing =
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
把表(或者分区)组织成桶(Bucket)有两个理由:
1. 获得更高的查询处理效率。桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接(Map-side join)高效的实现。比如JOIN操作。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量。
2. 使取样(sampling)更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。
对于Map端连接的情况,两个表以相同方式划分桶。处理左边表内某个桶的 mapper知道右边表内相匹配的行在对应的桶内。因此,mapper只需要获取那个桶 (这只是右边表内存储数据的一小部分)即可进行连接。这一优化方法并不一定要求两个表必须桶的个数相同,两个表的桶个数是倍数关系也可以。
l Hive Client数据操作
hive -help
hive --help
hive -e &select * from words&
hive -S -e &select * from words&
hive -f hivecli.sql
hive -S -f hivecli.sql
hive (hive)& source /hadoop/ylxsource/myspark/testdata/hivecli.
hive -S -f hivecli.sql & result.txt
hive (hive)& set val=
select * from test where name = &#39;${hiveconf:val}&#39;;
通过sh脚本执行:
#!/bin/bash
hive-S -e &
bash test.sh
Hive数据加载(内部表,外部表,分区表)
内部表数据加载
1. 创建表时加载数据
create table test_bak as select *
2. 创建表时指定数据路径
create table if not exists test2(
name string,
row format delimited fields terminated by&#39;|&#39;
lines terminated by &#39;\n&#39;
stored as textfile
location&#39;file:/hadoop/ylxsource/myspark/testdata/location&#39;;
表删除时,数据目录也会删除
3. 本地数据加载
create table if not exists test2(
name string,
row format delimited fieldsterminated by &#39;|&#39;
lines terminated by &#39;\n&#39;
load data local inpath&#39;/hadoop/ylxsource/myspark/testdata/external.txt&#39; into table test2;
4. HDFS数据加载
create table if not exists test2(
name string,
row format delimited fieldsterminated by &#39;|&#39;
lines terminated by &#39;\n&#39;
load data inpath&#39;hdfs://SZB-L88/testdata/external.txt&#39; into table test2;
load data inpath&#39;hdfs://SZB-L88/testdata/external.txt&#39; overwrite into table test2;
5. 通过hdfs命令将数据拷贝到指定的表的目录下面
hdfs dfs -put external.txthdfs://SZB-L88/user/hive/myspark/hive.db/test2/external2.txt
此种方式和内部表相同。
6. 由查询语句加载数据
insert overwrite table test2 select * from test3;
insert into table test2 select * from test3;
外部数据加载
1. 创建外部表时指定分区
create external tableif not exists test2(
name string,
row formatdelimited fields terminated by &#39;|&#39;
lines terminatedby &#39;\n&#39;
stored astextfile
location&#39;hdfs://SZB-L88/testdata/external/&#39;;
load data inpath &#39;hdfs://SZB-L88/testdata/external&#39;into table test2 partition(dt=);
show partitions test2;
2. 查询时插入数据
drop table IF EXISTShdp_circ_annuity_number_60s;
create table IF NOT EXISTShdp_circ_annuity_number_60s
polno stringcomment &#39;保单号&#39;,
plan_code stringcomment &#39;险种代码&#39;,
deptno stringcomment &#39;部门&#39;,
p_number decimal(18) comment &#39;人数&#39;
partitioned by (flag string, data_date string)
row format delimited fields terminated by &#39;\001&#39; ;
insert overwrite tablehdp_circ_annuity_number_60s partition(flag, data_date)
select polno,
plan_code,
count(distinct insno) as p_number,
&#39;A1&#39; as flag,
&#39;; as data_date
from hdp_gbs_pol_ben_tmp
where to_date(undwrt_date) &= &#39;&#39; and to_date(undwrt_date)& &#39;&#39;
group by polno,
plan_code,
3. 加载数据到分区表
load data local inpath &#39;/home/hadoop/data.txt&#39; overwriteinto table test partition (ds=&#39;&#39;);
load data inpath &#39;hdfs://SZB-L88/hadoop&#39;overwrite into table test partition (ds=&#39;&#39;);
Hive数据加载注意问题
分隔符问题:
分隔符默认只有单个字符。如果有多个字符,默认取第一个字符作为分隔符。
数据类型对应问题:
load数据数据,字段类型不能互相转化时,查询结果返回NULL。而实际的数据仍然存在。
select查询插入,字段类型不能互相转化时,插入数据为NULL。而实际的数据也为NULL。
select查询插入数据,字段值顺序要与表中字段顺序一致,名称可不一致。
Hive在数据加载时不做检查,查询时检查。
外部分区表需要添加分区才能看到数据。
Hive数据导出
使用HDFS命令导出
获取location路径
使用get方式获取:
hdfs dfs -get hdfs://SZB-L88/user/hive/myspark/hive.db/test/array.txtresult.txt
使用text方式获取:
hdfs dfs -texthdfs://SZB-L88/user/hive/myspark/hive.db/test/array.txt & ok
通过INSERT & DIRECTORY方式
insert overwrite local directory&#39;/hadoop/ylxsource/myspark/testdata/test2&#39;
row format delimited fields terminated by&#39;\t&#39;
select * from test2;
insert overwrite directory&#39;hdfs://SZB-L88/testdata/test2&#39;
row format delimited fields terminated by &#39;\t&#39;
select * from test2;
Shell命令方式
hive -S -e & select * fromtest2;& & result.txt
第三方工具Sqoop
sqoop import/export
Hive动态分区
动态分区指不需要为不同的分区添加不同的插入语句,分区不确定,需要从数据中自动获取。
相关参数配置
#开启动态分区
set hive.exec.dynamic.partition=
#如果模式是strict,则必须有一个静态分区,且放在最前面
set hive.exec.dynamic.partition.mode=
#每个节点生成动态分区最大个数
sethive.exec.max.dynamic.partitions.pernode=10000;
#生成动态分区最大个数,如果自动分区数大于这个参数,将会报错
set hive.exec.max.dynamic.partitions=100000;
#一个任务最多可以创建的文件数目
set hive.exec.max.created.files=150000;
#限定一次最多打开的文件数
set dfs.datanode.max.xcievers=8192;
create table dynamic_table(
partitioned by (name string,score string)
row format delimited
fields terminated by &#39;\t&#39;
lines terminated by &#39;\n&#39;
insert overwrite table dynamic_tablepartition(name,score)
select id,name,score from test2;
show partitions dynamic_
如果参数set hive.exec.dynamic.partition.mode=strict,则必须指定一个静态分区字段:
sethive.exec.dynamic.partition.mode=
再执行上面的语句:
insert overwrite table dynamic_tablepartition(name,score)
select id,name,score from test2;
会报如下错误:
FAILED: SemanticException [Error 10096]: Dynamic partition strict mode requires at least one staticpartition column. To turn this off sethive.exec.dynamic.partition.mode=nonstrict
需要如下方式指定一个静态分区字段:
insert overwrite table dynamic_tablepartition(name=&#39;Bigdata&#39;,score)
select id,score from test2;
Hive表字段属性修改
l 修改表名
alter table test2 rename to new_test2;
l 添加字段
alter table new_test2 add columns(count1 intcomment &#39;count1&#39;, count2 int comment &#39;count2&#39;);
l 修改字段
create tabletest_change (a int, b int, c int);
alter tabletest_change change a a1
alter tabletest_change change a1 a2
alter tabletest_change change c c1
l 修改表属性
alter table new_test2 set tblproperties(&#39;comment&#39;= &#39;this is the table new_test2&#39;);
l 外部表和内部表互转
内部表转外部表:
altertable new_test2 set TBLPROPERTIES (&#39;EXTERNAL&#39; = &#39;TRUE&#39;);
外部表转内部表:
altertable new_test2 set TBLPROPERTIES(&#39;EXTERNAL&#39;=&#39;FALSE&#39;);
Hive常见内置函数及其使用
l 查看当前可用函数等信息
显示函数的描述信息
DESC FUNCTION
显示函数的扩展描述信息
DESC FUNCTION EXTENDED
l 简单函数
函数的计算粒度为单条记录。
字符串函数
l 聚合函数
函数处理的数据粒度为多条记录。
sum()&求和
count()&求数据量
avg()&求平均直
distinct&求不同值数
min&求最小值
max&求最人值
l 集合函数
复合类型构建
复杂类型访问
复杂类型长度
l 特殊函数
1) 窗口函数
应用场景:
用于分区排序
动态Group By
last_value
2) 分析函数
ROW_NUMBER
DENSE_RANK
PERCENT_RANK
3) 混合函数
java_method(class,method [,arg1 [,arg2])
reflect(class,method [,arg1 [,arg2..]])
hash(a1 [,a2...])
lateralView: LATERAL VIEW udtf(expression)tableAlias AS columnAlias (&#39;,&#39; columnAlias)*
fromClause: FROM baseTable (lateralView)*
select t.word_list,count(1) from
select word_list from words w lateral view explode(split(w.word,&#39; &#39;)) ww as word_list
) t group by t.word_
lateral view用于和split,explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UTDF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。
l 常用函数
1. 获取当前时间
selectfrom_unixtime(unix_timestamp(),&#39;yyyy-MM-dd HH:mm:ss&#39;);
2. 截取时间
selectregexp_replace(substr(&#39;&#39;,0,7),&#39;-&#39;,&#39;&#39;);
select to_date(&#39; 12:24:12&#39;);
3. 修改日期格式
select from_unixtime(to_unix_timestamp(&#39;&#39;,&#39;yyyy/MM/dd&#39;),&#39;yyyy-MM-ddHH:mm:ss&#39;);
4. 数据类型强制转换
select cast(&#39;1314&#39; as int);
5. 判断语句
select ossdkversion,
osversion,
mobilemodel,
networkconntype,
e_version,
data_date,
&#39;登录&#39; as module,
case tmp.lable
when &#39;用户登陆&#39; then &#39;用户名+密码登录次数&#39;
when &#39;手势登录成功&#39; then &#39;手势密码登录成功次数&#39;
when &#39;手势设置失败&#39;then &#39;手势密码设置失败次数&#39;
when &#39;手势登录失败&#39; then &#39;手势密码登录失败次数&#39;
when &#39;忘记密码&#39; then &#39;忘记密码&#39;
frome_temp tmp
wheretmp.lable in (&#39;用户登陆&#39;,&#39;手势登录成功&#39;,&#39;手势设置失败&#39;,&#39;手势登录失败&#39;,&#39;忘记密码&#39;)
select if(&#39;o&#39;=&#39;o&#39;,&#39;o_o&#39;,&#39;^o^&#39;);
6. 解析Json格式内容
selectget_json_object(&#39;{&name&:&spark&,&age&:&10&}&#39;,&#39;$.name&#39;);
7. 解析URL地址
SELECTparse_url(&#39;https://facebook.com/path/p1.php?query=1&#39;, &#39;HOST&#39;);
SELECTparse_url(&#39;https://facebook.com/path/p1.php?query=1&#39;, &#39;QUERY&#39;)
SELECT parse_url(&#39;https://facebook.com/path/p1.php?query=1&#39;,&#39;QUERY&#39;, &#39;query&#39;);
8. 字符串连接函数
select concat(&#39;S&#39;,&#39;p&#39;,&#39;a&#39;,&#39;r&#39;,&#39;k&#39;);
select concat_ws(&#39;-&#39;,&#39;S&#39;,&#39;p&#39;,&#39;a&#39;,&#39;r&#39;,&#39;k&#39;);
9. 输出数组集合
列出该字段所有不重复的值,相当于去重
collect_set(polno) //返回的是数组
列出该字段所有的值,列出来不去重
collect_list(polno) //返回的是数组
select collect_set(polno) frommyspark.pol_ben_s;
select collect_list(polno) frommyspark.pol_ben_s;
10. 窗口函数:
first_value:
select polno,certno,first_value(certno) over (partition bypolno order by certno desc ) from myspark.pol_ben_s;
select polno,certno, rank() over (partition by polno order bycertno) as rank from myspark.pol_ben_s;
row_number:
select polno,certno, row_number() over (partition by polnoorder by certno) as rank from myspark.pol_ben_s;
row_number()是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
dense_rank()是连续排序,两个第二名仍然跟着第三名
rank()是跳跃拍学,两个第二名下来就是第四名
11. 使用正则表达式
selectregexp_extract(&#39;x=a3&x=18abc&x=2&y=3&x=4&#39;,&#39;x=([0-9]+)([a-z]+)&#39;,0);
selectregexp_extract(&#39;x=a3&x=18abc&x=2&y=3&x=4&#39;,&#39;x=([0-9]+)([a-z]+)&#39;,1);
selectregexp_extract(&#39;x=a3&x=18abc&x=2&y=3&x=4&#39;,&#39;x=([0-9]+)([a-z]+)&#39;,2);
</string,array

我要回帖

更多关于 mail.fqnp.com 的文章

 

随机推荐