您的位置:首页 > 数据库 > SQL

1.4 使用Sqoop从MySQL数据库导入数据到HDFS

2015-11-03 10:52 946 查看
1.4 使用Sqoop从MySQL数据库导入数据到HDFS

先将weblog_entries.txt放入/var/lib/mysql/path/下

mkdir /var/lib/mysql/path/


cp /home/data/weblog_entries.txt /var/lib/mysql/path/weblog_entries.txt


注:以下命令都是在namenode节点运行的

实验准备

在mysql中创建数据库和表,并插入数据

1.登录mysql

mysql -uroot -phadoop


2.创建新的数据库

CREATE DATABASE logs;


3.选择logs数据库

USE logs;


4.创建weblogs表

CREATE TABLE weblogs (
md5 VARCHAR(32),
url VARCHAR(64),
request_date DATE,
request_time TIME,
ip VARCHAR(15)
);


5.往 weblogs表插入数据

LOAD DATA INFILE './path/weblog_entries.txt' INTO TABLE weblogs
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';


书中 最后是 ‘\t\n’ 但是这样只能导入一行,最后将‘\t’去掉,导入3000条信息

6.查询下插入的数据量(应该有3000条)

select count(*) from weblogs;


更改配置

更改mysql的my.cnf 文件

vim /etc/mysql/my.cnf


找到以下语句,注释掉(在最前面加一个 # )

bind-address = 127.0.0.1


然后在关键字[mysqld]添加以下语句

skip-external-locking
skip-name-resolve
skip-grant-tables


最后 保存退出,然后重启下mysql

/etc/init.d/mysql restart




更改Hdfs的hdfs-site.xml 文件

vim /etc/hadoop-0.20/conf/hdfs-site.xml


添加以下语句

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>


最后 保存退出

注:每个节点的hdfs-site.xml都要这样修改,然后重启hadoop服务

更改sqoop的hdfs-site.xml 文件

vim /usr/lib/sqoop/bin/configure-sqoop


将以下语句注释掉

if [ ! -d "${HBASE_HOME}" ]; then
echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
echo 'Please set $HBASE_HOME to the root of your HBase installation.'
fi




实验过程

sqoop import -m 1 --connect jdbc:mysql://namenode:3306/logs --username root --password hadoop --table weblogs --target-dir /data/weblogs/impor




对sqoop进行个人解析,会有解析不到位的地方,还请大家指出来

sqoop import -m 1 –connect 这个是固定语句

jdbc:mysql://namenode:3306/logs 这里面 namenode:3306 是指mysql安装的主机,logs 是使用到的数据库

–username root 这里的root是登录mysql的账号

–password hadoop 这里的hadoop是登录mysql的密码

–table weblogs 这里的weblogs 是需要导入到HDFS的表名

–target-dir /data/weblogs/impor 这里的 /data/weblogs/impor 是数据导入到HDFS中的那个位置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: