文档章节

大数据平台数据加工流程

pearma
 pearma
发布于 2017/01/09 09:44
字数 1005
阅读 178
收藏 1

hadoop平台的底层是hdfs文件系统,所有的数据,都是以文件的方式存放在这个文件系统里的。因此上面的工具,都是以直接读取文件为其基本功能。且不管效率如何,任何文本文件放到平台上,都是可以被解析和查询的。但是要进一步提升查询的效率,对文件格式进行转化,变成列式存储是更好的选择。下面使用hive和impala,演示一下如何装载文本数据到hadoop系统,并能通过hive和impala检索。

基于hive的方案

Step 1. 准备数据文件。假设已有数据文件test.dat,纯文本,字段用^隔开。

>cat /home/hadoop/test.dat
victor^15
julia^20

Step 1.5. 数据压缩

7z a data.zip test.dat -tzip -v200k   #对数据文件进行分卷压缩,如果需要切割的话
7z a data.tar test.dat -ttar -v200k   #对数据文件进行分卷切割

7z x data.zip.001 -tzip.split         #对数据文件进行分卷合并解压
7z x data.tar.001 -ttar.split         #对数据文件进行分卷合并

Step 2.创建hive的文本数据表,用于装载数据

>beeline
beeline> !connect jdbc:hive2://hd-master:10000 hadoop hadoop
beeline>use default;
beeline>create table tbl_txt(uname string , uage int) row format delimited fields terminated by '^' stored as textfile;


Step 3.创建hive的parquet列式存储格式表,并装载数据

beeline>create table tbl_parquet(uname string ,uage int) stored as parquet;
beeline>load data local inpath '/home/hadoop/test.dat' into table tbl_txt;
beeline>insert into tbl_parquet select from tbl_txt;

load数据的时候,要确保hive用户,对数据文件以及数据文件所在目录有读权限。如果权限不足,会提示找不到数据文件,非常具有迷惑性。

基于impala的方案

  • 方案一:为减少数据转换的时间,采用external table的方式,来直接使用外部的数据。

Step 1. 源系统数据流转到大数据平台缓冲区,采用SCP方式上传

scp test.dat root@192.168.1.1: /home/hadoop/

Step 2. 数据由缓冲区移动到hdfs, 采用hdfs copyFromLocal方式

hadoop fs -copyFromLocal /home/hadoop/test.dat hdfs://192.168.1.1/user/hdfs/

Step 3. 在impala里,采用external table方式,直接访问数据。

CREATE DATABASE IF NOT EXISTS mac COMMENT 'customer information';

CREATE EXTERNAL TABLE IF NOT EXISTS tbl_txt_imp
(
    uname STRING COMMENT 'Customer Name', 
    uage    INT COMMENT 'Customer Age',
) 
COMMENT 'External Table' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '^' 
LOCATION '/user/hdfs/';

此时就完成了建表工作。数据也能够通过select直接访问了。记住location这个部分,写到目录名就可以了。这个目录下的所有文件,如果结构相同,都会合并到一张表里去。

  • 方案二:为提高查询效率,数据需要转成parquet结构。

在方案一基础上,完成以下步骤:

Step 4. 文件格式转换,由csv格式转换成Parquet Table 的格式

# 在impala里完成数据转换的工作;
# 首先建表,parquet格式
[local:21000] > create table tbl_parquet_imp(uname string,uage int) stored as parquet;

# 将hive里装载的表转存到parquet格式表中。
[local:21000] >insert overwrite table tbl_parquet_imp select * from tbl_txt_imp;

空间占用情况对比

改为列式存储后,数据占用的空间,直接减少了一半。

> hadoop fs -ls /user/hive/warehouse/gc_jnl_parquet
Found 1 items
-rwxrwxr-x   3 hadoop supergroup   44140870 2017-02-07 18:17 /user/hive/warehouse/gc_jnl_parquet/000000_0
> hadoop fs -ls /user/hive/warehouse/gc_jnl_txt
Found 1 items
-rwxrwxr-x   3 hadoop supergroup   82999914 2017-02-07 18:09 /user/hive/warehouse/gc_jnl_txt/test.unl

数据类型转换中,binary double是oracle搞出来的基于IEEE-754的实现,转换到hive时,直接使用double作为转换标的即可。

如果要做日期转换,可以用unix_timestamp来转换。例如:

select unix_timestamp ( '2015-05-15 12:00:00-07:00',  'yyyy-MM-dd HH:mm:ss-hh:mm') as may_15_year_month_day;

© 著作权归作者所有

pearma
粉丝 3
博文 67
码字总数 26042
作品 0
徐汇
高级程序员
私信 提问
下一代智能数据工厂,阿里云发布全新DataWorks

大数据的开发能力已经成为企业的核心竞争力之一, 企业对数据资产的管理、加工、利用的诉求也越来越强烈。 9月5日,阿里云发布了DataWorks V2版本, 可提升数据开发的效率并简化数据操作,为企业...

阿里云头条
2018/09/06
0
0
运营商大规模数据集群治理实践指南

Q1:军哥,你们运营商行业的大规模集群,都有啥特点啊? A:我们集群主要是承载B域、信令和互联网日志等去标识化数据,简单的说,有三个特点: 集群规模较大:数千节点规模,近百PB数据量,日...

尹正军、穆纯进
06/20
0
0
【数据宝】挖掘数据宝藏,共享数据价值

“今天,我们在贵安新区的办公室又新建扩大了,接下来,我们将在全国建立一支500多人的包括技术研发、市场推广、客户服务团队,帮助近千万的数据资源方,对接全国数百万的APP开发者、IT创业者...

yxlk888
2016/08/18
0
0
NLPIR语义挖掘技术提升大数据处理效果

  随着社会的进步,科学技术的不断发展,信息技术成了目前最受关注,也是发展最快的科学技术。世界各国都在致力于信息化,而各国对于信息化的巨大需求又反过来不断促进信息技术的革新,可以...

ljrj123
2018/08/21
0
0
基于SequoiaDB与Pentaho打造开源一体化BI平台

在6月14日举办的OSC源创会上海站,SequoiaDB巨杉数据库的联合创始人兼CTO王涛,发表了题为“基于SequoiaDB与Pentaho打造开源一体化BI平台”的技术分享。这一话题得到了现场观众的热烈响应,那...

ark43420
2015/06/26
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部