如何预处理数据并加载到配置单元中
how to preprocess the data and load into hive
我完成了 hadoop 课程,现在我想从事 Hadoop 方面的工作。我想了解从数据摄取到可视化数据的工作流程。
我知道生态系统组件是如何工作的,并且我已经构建了具有 8 个数据节点和 1 个名称节点的 hadoop 集群:
1 namenode --Resourcemanager,Namenode,secondarynamenode,hive
8个datanodes--datanode,Nodemanager
我想了解以下内容:
- 我有数据 .tar 结构化文件,前 4 行有 description.how 来处理这种类型的数据,我有点困惑。
1.a 我可以直接处理数据吗,因为这些是 tar files.if 是的,如果我需要取消 tar 并删除第一行,如何删除前四行中的数据4条线
1.b 我想使用配置单元处理这些数据。
请建议我该怎么做。
提前致谢。
按照以下步骤实现您的目标:
- 复制数据(ie.tar文件)到安装hadoop的客户端系统
- 解压文件并手动删除描述并将其保存在本地。
根据描述在配置单元中创建元数据(即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 ','
由于数据是结构化格式,您可以使用以下命令将数据加载到配置单元 table 中。
LOAD DATA LOCAL INPATH '/LOCALFILEPATH' INTO TABLE TABLENAME
.
现在,本地数据将移动到hdfs并加载到hive中table。
最后,您可以使用SELECT * FROM TABLENAME;
查询配置单元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
我完成了 hadoop 课程,现在我想从事 Hadoop 方面的工作。我想了解从数据摄取到可视化数据的工作流程。
我知道生态系统组件是如何工作的,并且我已经构建了具有 8 个数据节点和 1 个名称节点的 hadoop 集群: 1 namenode --Resourcemanager,Namenode,secondarynamenode,hive 8个datanodes--datanode,Nodemanager
我想了解以下内容:
- 我有数据 .tar 结构化文件,前 4 行有 description.how 来处理这种类型的数据,我有点困惑。 1.a 我可以直接处理数据吗,因为这些是 tar files.if 是的,如果我需要取消 tar 并删除第一行,如何删除前四行中的数据4条线 1.b 我想使用配置单元处理这些数据。
请建议我该怎么做。
提前致谢。
按照以下步骤实现您的目标:
- 复制数据(ie.tar文件)到安装hadoop的客户端系统
- 解压文件并手动删除描述并将其保存在本地。
根据描述在配置单元中创建元数据(即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 ','
由于数据是结构化格式,您可以使用以下命令将数据加载到配置单元 table 中。
LOAD DATA LOCAL INPATH '/LOCALFILEPATH' INTO TABLE TABLENAME
.现在,本地数据将移动到hdfs并加载到hive中table。
最后,您可以使用
SELECT * FROM TABLENAME;
查询配置单元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