Hadoop 连接mysql

本文介绍如何使用Hadoop的DBWritable接口将MySQL数据导入HDFS,以及如何反向操作,将HDFS数据导入MySQL数据库。涉及的技术包括DataInput、DataOutput、DBInput和DBOutput等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1   

mysql数据导入到hdfs数据

      hadoop提供了org.apache.hadoop.io.Writable接口来实现简单的高效的可序列化的协议,该类基于DataInput和DataOutput来实现相关的功能。

     hadoop对数据库访问也提供了org.apache.hadoop.mapred.lib.db.DBWritable接口,其中write方法用于对PreparedStatement对象设定值,readFields方法用于对从数据库读取出来的对象进行列的值绑定;

见  https://blog.youkuaiyun.com/lianggangzzu/article/details/72594186

见  https://blog.youkuaiyun.com/fantasticqiang/article/details/80667023

 

2

hdfs数据导入到mysql

    hdfs文件存储到mysql,也需要上边的DBRecord类作为辅助,因为数据库的操作都是通过DBInput和DBOutput来进行的;

转载于:https://www.cnblogs.com/aibabel/p/10878160.html

### 虚拟机中配置 Hadoop 连接 MySQL 的解决方案 在虚拟机环境下,为了使 Hadoop 可以成功连接MySQL 数据库并进行数据交互,需要完成以下几个方面的配置: #### 1. 安装 MySQL 并启动服务 确保 MySQL 已经正确安装并且可以正常运行。可以通过以下命令强制安装 MySQL 库及其服务器组件[^2]: ```bash rpm -ivh --force --nodeps mysql-libs-5.1.73-5.el6_7.1.x86_64.rpm rpm -ivh --force --nodeps mysql-5.1.73-5.el6_7.1.x86_64.rpm rpm -ivh --force --nodeps mysql-server-5.1.73-5.el6_7.1.x86_64.rpm # 启动 MySQL 服务 service mysqld start ``` #### 2. 下载并放置 JDBC 驱动程序 为了让 Hadoop 支持与 MySQL 的通信,需下载适用于 Java 的 MySQL Connector/J 驱动包,并将其复制到 Hadoop 的 `lib` 目录下。 驱动下载链接通常可以从官方站点获取 (https://dev.mysql.com/downloads/connector/j/)。假设已下载名为 `mysql-connector-java-x.x.xx.jar` 的文件,则可执行如下操作: ```bash cp mysql-connector-java-x.x.xx.jar $HADOOP_HOME/share/hadoop/common/lib/ ``` #### 3. 修改 Hive 或 Sqoop 环境变量(视需求而定) 如果计划通过 Hive 或者 Sqoop 来访问 MySQL 中的数据表,则还需要设置相应的环境变量以便加载 MySQL 驱动类。例如对于 Hive,可以在 `/etc/profile` 文件中加入以下内容[^4]: ```bash export HIVE_HOME=/usr/hive/hive-2.1.1 export PATH=$PATH:$HIVE_HOME/bin source /etc/profile ``` #### 4. 创建测试数据库及授权远程访问权限 进入 MySQL 命令行界面创建一个新的数据库供实验用途,并赋予特定 IP 地址范围内的客户端读写权限。 ```sql CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON testdb.* TO 'hiveuser'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` #### 5. 编辑 core-site.xml 和 hdfs-site.xml 文件中的必要参数 虽然这些 XML 文件主要用于定义分布式文件系统的属性,但在某些情况下也可能涉及网络层面上的调整来促进跨平台协作。具体来说就是确认 Namenode 和 Datanodes 是否能够互相解析对方的名字和服务端口信息[^1]. 最后一步则是验证整个流程是否通畅无误 – 使用简单的 MapReduce Job 测试能否顺利从关系型数据库里提取记录出来处理后再存回原处去。 ```python from pyhive import hive conn = hive.Connection(host="localhost", port=10000, username="your_username") cursor = conn.cursor() query = "SELECT * FROM your_table LIMIT 10" cursor.execute(query) for result in cursor.fetchall(): print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值