一、数据抽取
日均增长数据 10G,取宽度为 2年的时间段作为观测窗口,项目数据为 6 T(若日均增长数据 14 G,则项目数据 10 T)。
TB 量级以上的海量数据,要考虑存储和计算的效率问题。
基于分布式存储以后,数据被分布式存储在不同的服务器上,那么可以采用分布式计算框架(Mapreduce,Spark)来进行并行计算,大幅度提高工作效率。l
方法一,使用 Hive 导入数据到 HDFS:
导入数据语法如下:
LOAD DATA [LOCAL] INPATH 'filepath' OVERWRITE INTO TABLE table_name PARTITION(字段=‘值’)
Hive中导入数据有4种方式:本地导入、HDFS 导入、单表插入、多表插入
LOAD操作将数据文件移动到 Hive 表对应的位置,如果没有 local 关键字,那么会查找 HDFS 上面l的路径。
filepath 可以是如下类型:
- 相对路径:例如 project/data
- 绝对路径:例如 /usr/hive/project/data (推荐使用)
- 包含模式的完整 URL:例如 hdfs:/namenode:8020/user/hive/project/data
OVERWRITE 指定覆盖表之前的数据,如果是追加,则去掉 OVERWRITE 关键字
创建”石油产量原始数据表“ t_oilwproduction_origin 表,本地导入数据 hive/data/oilinfo.txt:
#创建表 t_oilwproduction_origin
CREATE TABLE t_oilproduction_origin(
oilwell_ID int,
oilw_output_total string, #产量
oilw_output_volume string, #产量体积
oilw_output_water string, #产量含水量
oilw_output_effoil string, #有效产油量
oilw_concentration string, #采聚浓度 产量/产量体积
oilw_pressure string, #井下压力
oilw_pressure_eff string #破裂压力)
ROW FORMAT DELIMATED FIELDS TERMINATED BY ','; #表列数据用 ‘,’ 分隔
#导入数据
LOAD DATA [local] INPATH 'hive/data/oilinfo.txt' OVERWRITE INTO TABLE t_oilproduction_origin;
单表插入:从一张表中查询数据插入另一张表,两张表都是