欢迎来到安国润的个人网站

上传文件到虚拟机

返回列表

上传文件到虚拟机

上传文件到虚拟机上,注意编码格式为 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;