0


xslx表格文件采集到hdfs流程&hdfs数据 load到hive表

xslx表格文件采集到hdfs

咱们就是说,别的话不多说,直接开始实操

xslx在win系统上,打开后另存为csv文件格式,上传到linux系统中。(注意下编码格式,不然后面就是中文乱码)。

file -i csv文件
可以查看文件现在的编码格式(编码格式不匹配会导致文件内中文乱码)。

修改文件的编码格式:

iconv -f gbk -t UTF-8 目标csv文件 > 生成新csv文件
cat文件,可以发现文件内容已经不是乱码了。

采集csv文件到hdfs中

在datax/job目录创建json文件,(Datax数据源转换文档:https://github.com/alibaba/DataX/blob/master/introduction.md),按照需求配置json文件。

提交数据同步任务:

python datax/bin/datax.py json文件路径/job.json

我为了方便自己使用,写了一个脚本——datax提交同步任务的脚本:run_datax.sh

#!/bin/bash

current_time=$(date "+%Y-%m-%d-%H_%M")
config_file="/json文件路径/xlsx3hdfs.json"

替换配置文件中的文件名

sed -i "s#"fileName": "xlsx2hdfs_.*.txt"#"fileName": "xlsx2hdfs_${current_time}.txt"#" $config_file

执行 DataX 命令

/datax/bin/datax.py $config_file

该脚本作用:
1、快速执行同步
2、在生成的hdfs文件名中加上了当前的时间戳

执行脚本:./run_datax.sh

值得注意的是脚本内容指定了一个json文件,如果后面需要同步其他任务,记得修改相关配置;同步其他csv文件,在json里修改;有更好的方法,也可以采用自己的方法。

hdfs load到hive表中

开启hive,创建表

后端启动hive --service metastore:nohup hive --service metastore > /dev/null 2>&1 &

后端启动hiveserver2:nohup hiveserver2 > /dev/null 2>&1 &

create table hdfs2hive(
id Int,
name String,
age Int,
gender String,
num Int
)
row format delimited fields terminated by '\t';

LOAD DATA INPATH '/hdfs/xlsx2hdfs/xlsx2hdfs_2023-12-22-11_02.txt__ea45309b_0ef4_4f86_ac37_4e42375dbc9c' INTO TABLE hdfs2hive;

为了增加复用性

-- 定义变量并赋值
SET hivevar:file_path='/hdfs/xlsx2hdfs/xlsx2hdfs_2023-12-22-11_02.txt__ea45309b_0ef4_4f86_ac37_4e42375dbc9c';

-- 创建表
CREATE TABLE hdfs2hive (
id INT,
name STRING,
age INT,
gender STRING,
num INT
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

-- 使用变量加载数据
LOAD DATA INPATH '${hivevar:file_path}' INTO TABLE hdfs2hive;

标签: hdfs hadoop 大数据

本文转载自: https://blog.csdn.net/sour_LI/article/details/135556986
版权归原作者 sour_LI 所有, 如有侵权,请联系我们删除。

“xslx表格文件采集到hdfs流程&hdfs数据 load到hive表”的评论:

还没有评论