【python】hive数据库迁移到mysql数据库

可能需要先看的内容(主要是依赖安装和连接hive时的报错问题解决)
sublime+python+hive

pip install

在这里插入图片描述

文件

from impala.dbapi import connect
import time
import pymysql

tables=['list_day']#所有要迁移的表名数组,本hive数据库和mysql数据库表名相同,字段也相同,所以比较简单

start_time=time.time()
conn1=connect(host='XXX',port=10000,database='js',auth_mechanism='PLAIN',user='c',password='c')
cur1=conn1.cursor(dictify=True)#返回字典列表
conn2=pymysql.connect(host='XXX',user='d',password='d',port=3306,database='e')
cur2=conn2.cursor()
#处理每一张表
for item in tables:
	try:
		sql1='select * from '+item
		cur1.execute(sql1)
		res1=cur1.fetchall()
		#处理每一行数据
		for _res1 in res1:
			#所有字段
			k=[str(ele).split('.')[1] for ele in _res1.keys()]#由于hive返回时字段是table.column形式,所以需要split处理
			#所有值
			v=[str(ele) for ele in _res1.values()]
			#逗号拼接 column1,culum2    value1,value2
			columns=','.join(k)
			values=','.join(v)
			print(columns,values)
			sql2='insert into %s (%s) values (%s);'%(item,columns,values)
			cur2.execute(sql2)
			print(sql2)
		conn2.commit()# 容易忘记
	except Exception as e:
		print(item,e)#输出未成功的表
		pass


end_time=time.time()
print(end_time-start_time)
cur1.close()
conn1.close()
cur2.close()
conn2.close()
好的,我可以为您提供一些关于使用DataX进行MySQLHive数据迁移的指导。 首先,您需要安装DataX并配置好环境。然后,您需要编写一个DataX任务配置文件,以指定源和目标数据源的详细信息。 以下是一个简单的MySQLHive的DataX任务配置文件示例: ``` { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "your_mysql_username", "password": "your_mysql_password", "column": [ "column1", "column2", "column3" ], "connection": [ { "jdbcUrl": "jdbc:mysql://your_mysql_server:3306/your_mysql_database", "table": [ "your_mysql_table" ] } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://your_hdfs_server:9000", "fileType": "text", "path": "/your_hdfs_path", "fileName": "your_hdfs_file_name", "fieldDelimiter": "\t", "writeMode": "append", "column": [ "column1", "column2", "column3" ] } } } ], "setting": { "speed": { "channel": "3" } } } } ``` 在上面的配置文件中,您需要将以下信息进行替换: - `your_mysql_username`:MySQL数据库的用户名。 - `your_mysql_password`:MySQL数据库的密码。 - `your_mysql_server`:MySQL数据库的服务器地址。 - `your_mysql_database`:MySQL数据库的名称。 - `your_mysql_table`:要迁移MySQL表的名称。 - `your_hdfs_server`:HDFS服务器的地址。 - `your_hdfs_path`:HDFS中要写入数据的路径。 - `your_hdfs_file_name`:在HDFS中要写入的文件名。 - `column1`,`column2`和`column3`:要迁移的列名称。 完成配置文件后,您可以使用以下命令来执行DataX任务: ``` python datax.py your_job_config.json ``` 这将启动DataX并开始将MySQL表中的数据传输到Hive表中。 希望这可以帮助您进行MySQLHive的数据迁移。如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值