Hive 是一个基于 Hadoop 的分布式数据仓库,可以对大规模数据进行存储、查询和分析
CREATE TABLE
语句来定义表的结构,包括字段名、数据类型等。CREATE TABLE example_table (
id INT,
name STRING,
age INT,
salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
LOAD DATA
语句从本地文件系统或其他存储系统中加载数据。LOAD DATA LOCAL INPATH '/path/to/your/data.csv' INTO TABLE example_table;
SELECT
语句和聚合函数(如 AVG()
、MAX()
、MIN()
等)来处理数据。-- 去除空值
SELECT * FROM example_table WHERE id IS NOT NULL AND name IS NOT NULL AND age IS NOT NULL AND salary IS NOT NULL;
-- 去除重复值
SELECT DISTINCT * FROM example_table;
-- 数据类型转换
SELECT CAST(id AS STRING) AS id, name, age, salary FROM example_table;
REGEXP_EXTRACT()
、CASE WHEN()
等,可以帮助你进行更复杂的数据清洗操作。-- 使用 REGEXP_EXTRACT() 提取字符串的一部分
SELECT REGEXP_EXTRACT(name, '(\w+)', 1) AS first_name, last_name, age, salary FROM example_table;
-- 使用 CASE WHEN() 进行条件过滤
SELECT id, name, age, salary
FROM example_table
WHERE CASE WHEN age >= 18 THEN 'Adult' ELSE 'Minor' END = 'Adult';
-- 分区
CREATE TABLE example_table_partitioned (
id INT,
name STRING,
age INT,
salary FLOAT
)
PARTITIONED BY (country STRING);
-- 分桶
CREATE TABLE example_table_bucketed (
id INT,
name STRING,
age INT,
salary FLOAT
)
CLUSTERED BY (id) INTO 10 BUCKETS;
总之,在 Hive 中进行数据清洗需要创建表、加载数据、使用内置函数、分区、分桶以及使用 MapReduce 或 Spark 进行更复杂的处理。通过这些操作,你可以对大规模数据进行有效的清洗和预处理。