hadoop
mysql linux python
数据采集电影简单步骤
数据导入mysql
第一步:创建MySQL表
首先,登录到MySQL数据库并创建一个新的表movies确保字段支持中文字符集(使用UTF-8)
CREATE DATABASE movie_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE movie_db;
CREATE TABLE movies (
title VARCHAR(255) NOT NULL,
url VARCHAR(255),
poster_url VARCHAR(255),
rank INT,
details TEXT,
rating FLOAT,
num_reviews VARCHAR(255),
comments TEXT
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
第二步:清理和导入CSV数据
清理CSV
数据CSV数据包含换行符和多余的空白字符,需要先进行一些清理使用Python进行数据清理,并生成一个新的CSV文件
import csv
input_file = 'input.csv'output_file = 'cleaned_output.csv'
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
if len(row) > 0:
cleaned_row = [item.strip() for item in row] writer.writerow(cleaned_row)
导入CSV数据
mysql -uroot -pUSE movie_db;
LOAD DATA INFILE '/home/hadoop/db/cleaned_output.csv'INTO TABLE moviesFIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS(title, url, poster_url, rank, details, rating, num_reviews, comments);
第三步:验证数据导入通过查询数据库来验证数据是否成功导入:
SELECT * FROM movies;
第四步:解释说明
数据库名称
数据库名称:movie_db
表名称
表名称:movies
表结构
title:电影标题,VARCHAR(255),不能为空url:电影的URL链接,VARCHAR(255)
poster_url:电影海报的URL链接,VARCHAR(255)
rank:电影的排名,INT
details:电影的详细信息,TEXT类型
rating:电影的评分,FLOAT类型
num_reviews:电影的评论数量,VARCHAR(255)
comments:电影的评论内容,TEXT类型
数据处理说明
导入到linux服务器之前 对 "豆瓣电影 Top 250.csv" 数据删除了 "其他"列 "标题1"列 "是否可播放"列 删除了第一行的表头导入到mysql之前CSV数据包含换行符和多余的空白字符共采集 250条数据
mysql导入hive
导入命令
sqoop import \
--connect jdbc:mysql://192.168.1.130:3306/movie_db?useSSL=false \
--username root \
--password 123456 \
--table movies \
--hive-import \
--hive-database default \
--hive-table movies \
--create-hive-table \
--fields-terminated-by ',' \
--lines-terminated-by '\n' \
--null-string '\\N' \
--null-non-string '\\N' \
-m 1
验证是否导入成功
启动Hive CLI:
hive
选择数据库:
USE default;
查询数据:
SELECT * FROM movies LIMIT 10;
解释说明
数据通过sqoop工具从mysql导入到hive中
数据库名称
数据库名称:default
表名称
表名称:movies
表结构
title:VARCHAR(255)
url:VARCHAR(255)
poster_url:VARCHAR(255)
rank:INT
details:TEXT
rating:FLOAT
num_reviews:VARCHAR(255)
comments:TEXT
导入说明
--connect
jdbc:mysql://192.168.1.130:3306/movie_db?useSSL=false:连接到MySQL数据库 movie_db。
--username root:使用用户名 root 进行连接。
--password 123456:连接MySQL数据库的密码。
--table movies:从MySQL的 movies 表中导入数据。
--hive-import:将数据导入到Hive中。
--hive-database default:指定Hive中的数据库为 default。
--hive-table movies:在Hive中创建名为 movies 的表。
--create-hive-table:在Hive中创建表时,使用MySQL表的结构。
--fields-terminated-by ',':指定字段之间的分隔符为逗号。
--lines-terminated-by '\n':指定行终止符为换行符。
--null-string '\\N' 和 --null-non-string '\\N':指定在导入过程中空字符串的处理方式为 \\N。