AWS Impala查询S3中的数据

AWS Impala查询S3中的数据

摘要

AWS Impala查询S3中的数据

概要

S3中存放日志数据
格式就是一条记录一行,每个字段之间用指定的标识符分隔(比如逗号)

日志数据按天保存
每个文件都是固定大小

使用EMR功能
导入S3中的数据到HDFS里

本地工具DBeaver再链接到Master节点

创建EMR

选择合适的版本才有Impala组件

添加自定义步骤,利用aws提供的jar导入S3数据到HDFS里

特别注意jar位置

/home/hadoop/lib/emr-s3distcp-1.0.jar
这是AWS内置的,创建好EC2实例之后就会自带的
下面的参数是指明,从哪个S3 bucket里下载哪个文件夹,保存到hdfs的哪个位置

--src=s3://top-upload-bak/ 
--dest=hdfs:///testinput-top
--srcPattern=.*201627_app/2016-07-04/.*

选择合适的EC2实例

选择EC2 Key,注意当前登陆AWS的用户要有创建Profile的权限

如果权限不够,可以让管理员添加

等待自定义jar执行完毕

SSH链接

拷贝Master public DNS

我使用的是xshell

设置端口转发,本地方便使用工具通过127.0.0.1访问Impala的服务

确认已经导入的数据

hadoop fs -ls /testinput-top/201627_app/2016-07-04/

创建Impala表

注意指定逗号分隔,注意指定HDFS的位置

DROP TABLE IF EXISTS  top ;create EXTERNAL TABLE top(
         ps_an STRING ,
         ps_cg STRING,
         ps_md5 STRING,
         ps_fm STRING,
         ps_to STRING,
         ps_sender_xpn STRING,
         ps_receive_xpn         STRING,
         ps_lg         STRING,
         ps_pn         STRING,
         ps_utime         BIGINT,
         ps_tm         BIGINT,
         ps_ip         STRING,
         ps_macaddr      STRING,
         ps_at         STRING,
         ps_aty         STRING,
         ps_ct         STRING,
         ps_lt             STRING,
         ps_mpne         STRING,
         ps_sender_sys         STRING,
         ps_sender_phonebrand        STRING,
         ps_sender_phonemodel      STRING,
         ps_receive_phonebrand      STRING,
         ps_receive_phonemodel      STRING,
         ps_ch         STRING,
         ps_init_chn         STRING,
         ps_vn         INT,
         ps_ch_send         STRING,
         ps_init_chn_send            STRING,
         ps_vn_send         INT,
         ps_gp         STRING,
         ps_gp_id         STRING,
         ps_filesize      BIGINT,
         ps_port         INT,
         ps_osv         STRING,
         ps_d1         STRING,
         ps_d2         STRING,
         ps_d3          STRING,
         ps_d4         STRING
         )
         ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/testinput-top/201627_app/2016-07-04';

本地工具连接

我使用的是DBeaver

驱动管理-新建一个Impala专用的驱动

Impala驱动文件下载地址
http://docs.aws.amazon.com/zh_cn/ElasticMapReduce/latest/DeveloperGuide/emr-bi-tools.html

Impala驱动包名 com.amazon.impala.jdbc3.Driver
Impala驱动URL jdbc:impala:/127.0.0.1:21050

测试一条SQL