1. 网址: http://money.163.com/stock/
2. 输入搜索关键字
3. 资金流向
4. 历史交易数据
5. 下载数据
1. 数据格式
2. 删除首行并独立保存,Hive 建表时参考作为列名
3. 处理数据编码,另存为UTF-8避免Hive加载中文乱码
4. 处理后数据格式如下
1. HDFS中新建存储目录[/data已经存在,如不存在先创建data目录]
hdfs dfs -mkdir /data/stock
2. 从本地上传[本地存储目录为/app/tvcdata/stock/]
hdfs dfs -put /app/tvcdata/stock/ /data
3. 数据确认
hdfs dfs -ls /data/stock
1. 启动HiveServer2
nohup ./hive--service hiveserver2 &
2. 验证服务
ps aux |grep hive
http://host106:10002/hiveserver2.jsp
1. 连接到default数据库[default为默认数据库]
./beeline -u jdbc:hive2://localhost:10000/default -nroot -p root
2. 创建数据库 mystock
createdatabase mystock;
3. 选中创建的数据库
use mystock;
4. 查看当前选中的数据库
select current_database();
1. 创建表[这里创建为外部表,使用’ org.apache.hadoop.hive.serde2.OpenCSVSerde’编码解码器]
createexternal table if not exists stock(cdate date,code string,namestring,closeprice float,maxprice float,minprice float,openprice float,prepricefloat,updownlimit float,updownrange float,turnoverrate float,volume float,turnover float,totalvalue float, circulationvalue float) comment '股票信息表' row format serde'org.apache.hadoop.hive.serde2.OpenCSVSerde' stored as textfile location '/data/stock/';
2. 查看表信息
describe stock;
1. 分页
select code,name,closeprice from stock limit 0,5;
2. 条件查询
select closepricefrom stock where code='\'300212' and cdate='2017-10-20';
3. 排序
selectcode,name,closeprice from stock order bycloseprice desc limit 0,10;
上述查询触发了MR操作
4. 函数
selectmax(closeprice) as maxcloseprice,max(totalvalue) as maxtotalvalue from stock;
5. 聚合
select code,count(1)as totalrecord from stock group by code;
股票查询以日期作为索引列比较合适
1. 为cdate[日期]创建索引
create index index_stock_cdata on table stock(cdate) as'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERREDREBUILD;
2. 查看索引
show index on stock;