上传文件到虚拟机
上传文件到虚拟机上,注意编码格式为 UTF-8
[root@linux02 ~]# cd tmp
[root@linux02 tmp]# mkdir -p xinfadi_csv
[root@linux02 tmp]# ll
drwxr-xr-x. 2 root root 6 Jun 16 21:34 xinfadi_cs
[root@linux02 xinfadi_csv]# rz
[root@linux02 xinfadi_csv]# ll
-rw-r--r--. 1 root root 567949 Jun 16 15:37 xinfadi_cleaned.csv
[root@linux02 xinfadi_csv]# file xinfadi_cleaned.csv
xinfadi_cleaned.csv: UTF-8 Unicode (with BOM) text, with CRLF line terminators
[root@linux02 xinfadi_csv]# head -5 xinfadi_cleaned.csv
发布日期,一级分类,二级分类,品名,规格,产地,单位,最高价,最低价,平均价,发布时间
2026-06-01,水产,海水鱼,三文鱼肉,冰鲜,未知,斤,120.0,100.0,110.0,2026-06-01
2026-06-01,水产,海水鱼,三文鱼肉,冰冻,未知,斤,90.0,60.0,75.0,2026-06-01
2026-06-01,水产,淡水鱼,嘎鱼,>100g,未知,斤,17.0,16.0,16.5,2026-06-01
2026-06-01,水产,淡水鱼,嘎鱼,<100g,未知,斤,16.0,15.0,15.5,2026-06-01
[root@linux02 xinfadi_csv]# rm xinfadi_cleaned.csv
启动hdfs
[root@linux02 xinfadi_csv]# cd /opt/apps/hadoop-3.1.1/sbin
[root@linux02 sbin]# ping linux04
[root@linux02 sbin]# ping linux05
[root@linux02 sbin]# bash start-all.sh
[root@linux02 sbin]# jps
上传文件到hdfs中
[root@linux02 sbin]# hdfs dfs -ls /
[root@linux02 sbin]# hdfs dfs -mkdir -p /xinfadi
# 数字对应权限值 4 = 读 (r) 2 = 写 (w) 1 = 执行 (x) 第一位 (所有者 root) 第二位 (同组用户)第三位 (其他所有用户)
[root@linux02 sbin]# hdfs dfs -chomd 755 /xinfadi
# 清除所有\r换行符,覆盖原文件
hdfs dfs -cat /xinfadi/xinfadi_cleaned.csv | sed 's/\r//g' > tmp.csv
[root@linux02 sbin]# hdfs dfs -rm /xinfadi/xinfadi_cleaned.csv
Deleted /xinfadi/xinfadi_cleaned.csv
[root@linux02 sbin]# hdfs dfs -put /tmp/xinfadi_csv/xinfadi_cleaned.csv /xinfadi/
[root@linux02 sbin]# hdfs dfs -put /tmp/xinfadi_csv/2026-06-17.csv /xinfadi/
[root@linux02 sbin]# hdfs dfs -put /tmp/xinfadi_csv/2026-06-18.csv /xinfadi/
[root@linux02 sbin]# hdfs dfs -put /tmp/xinfadi_csv/2026-06-19.csv/xinfadi/
[root@linux02 sbin]# hdfs dfs -ls -h /xinfadi/
-rw-r--r-- 3 root supergroup 554.6 K 2026-06-16 22:21 /xinfadi/xinfadi_cleaned.csv
[root@linux02 sbin]# hdfs dfs -cat /xinfadi/xinfadi_cleaned.csv | head -5
发布日期,一级分类,二级分类,品名,规格,产地,单位,最高价,最低价,平均价,发布时间
2026-06-01,水产,海水鱼,三文鱼肉,冰鲜,未知,斤,120.0,100.0,110.0,2026-06-01
2026-06-01,水产,海水鱼,三文鱼肉,冰冻,未知,斤,90.0,60.0,75.0,2026-06-01
2026-06-01,水产,淡水鱼,嘎鱼,>100g,未知,斤,17.0,16.0,16.5,2026-06-01
2026-06-01,水产,淡水鱼,嘎鱼,<100g,未知,斤,16.0,15.0,15.5,2026-06-01
启动hive
[root@linux02 sbin]# hive --service metastore &
[root@linux02 xinfadi_csv]# hive --service hiveserver2 &
Hive Session ID = 3d7f8df1-4cbb-45de-b356-4ddae0712600
Hive Session ID = 23e6ed4c-9848-4080-95db-c51757b82246
Hive Session ID = a3bc4f66-aba4-4c17-8005-fcbc70cba63a
Hive Session ID = a83a2363-e49a-4540-8a6e-df084cbe35e0
# 出现 4个 Hive Session ID 说明服务已启动
[root@linux02 ~]# netstat -tulnp | grep 10000
tcp6 0 0 :::10000 :::* LISTEN 59702/java
[root@linux02 ~]# hive
[root@linux02 ~]# beeline -u jdbc:hive2://linux02:10000 -n root
0: jdbc:hive2://linux02:10000> show databases ;
+----------------+
| database_name |
+----------------+
| db_name |
| default |
| dome1 |
| text |
+----------------+
hive --service hiveserver2 stop
查看 HiveServer2 进程
ps -ef | grep HiveServer2 | grep -v grep
输出类似:
root 87274 87180 2 22:13 pts/1 00:01:36 /opt/apps/jdk1.8/bin/java ...
杀死进程
kill -9 87274
验证是否已关停
# 再查进程
ps -ef | grep HiveServer2 | grep -v grep
# 或查端口 10000
netstat -tulnp | grep 10000
hdfs文件导入hive
drop database if exists xinfadi_db;
-- 创建数据库(可选,分类管理)
create database if not exists xinfadi_db comment '新发地农产品价格数据仓库';
-- 进入数据库
use xinfadi_db;
-- 创建外部表 location 指向你的HDFS文件目录
create external table if not exists ods_xinfadi_data (
prod_id STRING COMMENT 'ID',
prod_cat STRING COMMENT '一级分类',
prod_pcat STRING COMMENT '二级分类',
prod_name STRING COMMENT '品名',
high_price STRING COMMENT '最高价',
low_price STRING COMMENT '最低价',
avg_price STRING COMMENT '平均价',
spec_info STRING COMMENT '规格',
place STRING COMMENT '产地',
unit_info STRING COMMENT '单位',
pub_date STRING COMMENT '发布时间'
)
comment '原始csv ODS层,未做任何数据清洗'
row fomat delimited
fields terminated by '', -- 文本文件每行用逗号切分各个字段 csv逗号分隔
stored as textflie -- 指定 Hive 表底层存储格式为纯文本文件
location '/xinfadi/' -- 指定HDFS数据存放目录
tblproperties (
"skip.header.line.count"="1",
"serialization.encoding" = "UTF-8"
); -- 忽略表头第一行
-- 只有每次将数据保存到hdfs中 hive就能自动加载目录下文件 不用每次install
show tables;
select * from ods_xinfadi_data limit 5;
select * from ods_xinfadi_data where pub_date='2026-06-22 00:00:00' limit 5;