一. 需求
我们做数据仓库的时候,一般是将源系统的数据(如MySQL)抽取到Hive中,然后在Hive中做ETL后,最后将处理完的数据从Hive再抽回到MySQL。
二. 解决方案
数据准备:
Hive端emp表
MySQL端提前创建好表
image.png
代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
# 创建一个连接
spark = SparkSession. \
Builder(). \
appName('local'). \
master('local'). \
getOrCreate()
spark.sql("use test")
df1 = spark.sql("select * from emp")
df1.write.format("jdbc").options(url="jdbc:mysql://10.31.1.123:3306/test",
driver="com.mysql.jdbc.Driver",
dbtable="emp_from_hive",
user="root",
password="abc123").mode('append').save()
# 关闭spark会话
spark.stop()
测试记录:
image.png
网友评论