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

how to preprocess the data and load into hive

我完成了 hadoop 课程,现在我想从事 Hadoop 方面的工作。我想了解从数据摄取到可视化数据的工作流程。

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

我想了解以下内容:

  1. 我有数据 .tar 结构化文件,前 4 行有 description.how 来处理这种类型的数据,我有点困惑。 1.a 我可以直接处理数据吗,因为这些是 tar files.if 是的,如果我需要取消 tar 并删除第一行,如何删除前四行中的数据4条线 1.b 我想使用配置单元处理这些数据。

请建议我该怎么做。

提前致谢。

按照以下步骤实现您的目标:

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

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

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

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

  7. 查询配置单元table

Can I directly process the data as these are tar files.

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

if yes, how to remove the data in the first four lines

正在启动Hive v0.13.0,在创建table时有一个table属性,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