Hadoop学习

HDFS

HDFS配置

Hive

Hive配置

连接DataGrip

1
2
3
4
5
start-dfs.sh
start-yarn.sh
cd /export/servers/hive
nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &

启动完毕后,在DataGrip中连接Hive,端口默认为10000。

可以用jps命令查看Hive的进程。结果如下:
启动完进程

常用语句

不同于MySQL,Hive的语法和MySQL的语法略微不同。

1
2
3
4
5
6
7
8
9
10
-- 创建表
-- Hive 不支持 AUTO_INCREMENT。
-- 必须指定数据的存储格式(如 TEXTFILE、PARQUET、ORC 等)和字段分隔符。
CREATE TABLE table_name (
column1 STRING,
column2 INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
1
2
3
4
5
6
7
-- 分区表
CREATE TABLE table_name (
column1 STRING,
column2 INT
)
PARTITIONED BY (partition_column STRING)
STORED AS PARQUET;
1
2
3
4
5
6
-- 外部表
CREATE EXTERNAL TABLE table_name (
column1 STRING,
column2 INT
)
LOCATION '/path/to/external/data/';
1
2
3
-- 加载本地数据
-- Hive 使用 LOAD DATA 导入本地或 HDFS 数据。
LOAD DATA LOCAL INPATH '/path/to/data/file' INTO TABLE table_name;
1
2
3
4
5
6
7
8
-- 分区表
分区是根据某个字段(或多个字段)的值,将数据存储在不同目录下的一种逻辑组织方式。每个分区实际上对应 HDFS 上的一个目录,分区字段的值决定了数据存放的位置。
-- 分区表创建
CREATE TABLE sales (
id INT,
amount FLOAT
)
PARTITIONED BY (region STRING, date STRING);
1
2
3
4
5
6
-- 分桶表
分桶是将数据划分为多个桶(bucket),每个桶包含一部分数据。分桶表创建
CREATE TABLE sales (
id INT,
amount FLOAT
)

封面

封面