如何预处理数据并加载到配置单元

时间:2015-10-01 07:55:17

标签: hadoop hive hadoop-streaming

我完成了我的hadoop课程,现在我想在Hadoop上工作。我想知道从数据提取到可视化数据的工作流程。

我知道eco系统组件是如何工作的,我已经构建了带有8个datanode和1个namenode的hadoop集群: 1 namenode --Resourcemanager,Namenode,secondarynamenode,hive 8个数据节点 - datanode,Nodemanager

我想知道以下事项:

  1. 我得到了数据.tar结构化文件和前4行已经得到了description.how来处理这类数据有点困惑。 1.a我可以直接处理数据,因为这些是tar文件。如果我需要解除并删除前4行,那么如何删除前四行中的数据 1.b我希望使用hive处理这些数据。
  2. 请建议我怎么做。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

  

我可以直接处理数据,因为这些是tar文件。

是的,请参阅以下解决方案。

  

如果是,如何删除前四行中的数据

启动 Hive v0.13.0 ,创建表时会有一个表属性tblproperties ("skip.header.line.count"="1")告诉Hive要忽略的行数。忽略前四行 - tblproperties ("skip.header.line.count"="4")

CREATE TABLE raw (line STRING)
   ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

CREATE TABLE raw_sequence (line STRING)
   STORED AS SEQUENCEFILE
   tblproperties("skip.header.line.count"="4");

LOAD DATA LOCAL INPATH '/tmp/test.tar' INTO TABLE raw;

SET hive.exec.compress.output=true;
SET io.seqfile.compression.type=BLOCK; -- NONE/RECORD/BLOCK (see below)

INSERT OVERWRITE TABLE raw_sequence SELECT * FROM raw;

查看数据:

select * from raw_sequence

参考:Compressed Data Storage

答案 1 :(得分:0)

按照以下步骤实现目标:

  1. 将数据(ie.tar文件)复制到安装hadoop的客户端系统。
  2. 解压缩文件并手动删除说明并将其保存在本地。
  3. 根据描述在配置单元中创建元数据(即表格) 例如:如果描述包含emp_id,emp_no等,则使用此信息在hive中创建表,并记下数据文件中使用的字段分隔符,并在create table query中使用相应的字段分隔符。假设该文件包含两个以逗号分隔的列,则下面是在hive中创建表的语法。

      Create table tablename (emp_id int, emp_no int)
      Row Format Delimited
      Fields Terminated by ','
    
  4. 由于数据采用结构化格式,您可以使用以下命令将数据加载到hive表中。 LOAD DATA LOCAL INPATH '/LOCALFILEPATH' INTO TABLE TABLENAME

  5. 现在,本地数据将被移动到hdfs并加载到hive表中。

  6. 最后,您可以使用SELECT * FROM TABLENAME;

  7. 查询配置单元表