hadoop大数据实战简单案例

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。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值