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;

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/c1efc38f8d.html