用Hive分析“余额宝”躺着赚大钱背后的逻辑

一、项目背景

前两年,支付宝推出的“余额宝”赚尽无数人的眼球,同时也吸引的大量的小额资金进入。“余额宝”把用户的散钱利息提高到了年化收益率4.0%左右,比起银行活期存储存款0.3%左右高出太多了,也正在撼动着银行躺着赚钱的地位。

在金融市场,如果想获得年化收益率4%-5%左右也并非难事,通过“逆回购”一样可以。一旦遇到货币紧张时(银行缺钱),更可达到50%一天隔夜回够利率。我们就可以美美地在家里数钱了!!

所谓逆回购:通俗来讲,就是你(A)把钱借给别人(B),到期时,B按照约定利息,还给你(A)本资+利息。逆回购本身是无风险的。(操作银行储蓄存款类似)。现在火热吵起来的,阿里金融的“余额宝”利息与逆回购持平。我们可以猜测“余额 宝”的资金也在操作“逆回购”,不仅保持良好的流通性,同时也提供稳定的利息。

二、项目需求分析

通过历史数据分析,找出走势规律,发现当日高点,进行逆回购,赚取最高利息。

三、项目数据集

stock.csv

四、项目思路分析

基于项目的需求,我们可以使用Hive工具完成数据的分析。

1、首先将数据集stock.csv导入Hive中,用日期做为分区表的分区ID。

2、选取自己的股票编号stockid,分别统计该股票产品每日的最高价和最低价。

3、以分钟做为最小单位,统计出所选股票每天每分钟均价。

五、参考步骤

第一步:将数据导入Hive中

 在hive中,创建 stock 表结构。

hive>  create table if not exists stock (tradedate STRING,tradetime STRING,stockid STRING,buyprice DOUBLE,buysize INT,sellprice DOUBLE,sellsize INT) 
					>row format delimited fields terminated by ','  STORED AS TEXTFILE;

将HDFS中的股票历史数据导入hive中。

LOAD DATA INPATH '/user/hive/stock.csv' INTO TABLE stock;

创建分区表 stock_partition,用日期做为分区表的分区ID。

hive>  create table if not exists stock_partition (tradetime STRING,stockid STRING,buyprice DOUBLE,buysize INT,sellprice DOUBLE,sellsize INT)
                    >partitioned by (tradedate STRING) row format delimited fields terminated by ',';

如果设置动态分区首先执行。

hive>set hive.exec.dynamic.partition.mode=nonstrict;

创建动态分区,将stock表中的数据导入stock_partition表。

hive>  insert overwrite table stock_partition partition(tradedate)
                    > select tradetime,stockid,buyprice,buysize,sellprice,sellsize, tradedate from stock distribute by tradedate;

第二步:hive自定义UDF,统计204001该只股票每日的最高价和最低价

  Hive 自定义Max统计最大值。

public class Max extends UDF{
    public Double evaluate(Double a, Double b) {
            if(a==null)
				a=0.0;
			if(b==null)
				b=0.0;
			if(a>=b){
				return a;
				}else{
					return b;
				}
			}
		}

Hive 自定义Min统计最小值。

public class Min  extends UDF{
    public Double evaluate(Double a, Double b) {					
                if(a==null)
					a=0.0;
				if(b==null)
					b=0.0;
	    		if(a>=b){
					return b;
				}else{
					return a;
				}
			}
		}

将自定义的Max和Min分别打包成maxUDF.jar和minUDF.jar, 然后上传至/home/hadoop/hive目录下,添加Hive自定义的UDF函数

hive> add jar /home/hadoop/hive/maxUDF.jar;
hive> add jar /home/hadoop/hive/minUDF.jar;

创建Hive自定义的临时方法maxprice和minprice。

hive>  create temporary function maxprice  as 'com.hadoop.hive.Max'; 
hive>  create temporary function minprice  as 'com.hadoop.hive.Min';

统计204001股票,每日的最高价格和最低价格。

hive> select stockid,tradedate, max(maxprice(buyprice,sellprice)),min(minprice(buyprice,sellprice))  from stock_partition where stockid='204001' group by tradedate;

第三步:统计每分钟均价

统计204001这只股票,每天每分钟的均价

hive> select stockid,tradedate,substring(tradetime,0,4), sum(buyprice+sellprice)/(count(*)*2)  from stock_partition 
					 where stockid='204001' group by stockid, tradedate,substring(tradetime,0,4); 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值