博客
关于我
Spark集成Hive和mysql
阅读量:146 次
发布时间:2019-02-27

本文共 1907 字,大约阅读时间需要 6 分钟。

Spark集成Hive及MySQL的详细配置与操作指南

一、Spark集成Hive

在本节中,我们将详细介绍如何将Spark集成Hive,并完成基本的数据操作。

1. 配置Hive到Spark

将Hive的配置文件复制到Spark的配置目录中,无论是软链接还是硬链接都可以。

ln -s /opt/software/hadoop/hive110/conf/hive-site.xml /opt/software/hadoop/spark244/conf/hive-site.xml

2. 复制JAR包

将Hive需要的JAR包复制到Spark的JAR目录中。

cp /opt/software/hadoop/hive110/lib/mysql-connector-java-5.1.32.jar /opt/software/hadoop/spark244/jars/

3. 启动Spark Shell

在Spark Shell中启用Hive支持,并指定所需的JAR包。

spark-shell --jars /opt/software/hadoop/spark244/jars/mysql-connector-java-5.1.32.jar

4. 创建Hive表

在Hive中创建数据库和表(操作略)。接下来我们将直接查询数据库进行演示。

5. 查询数据库

在Spark SQL中查看数据库列表。

scala> spark.sql("show databases").show()

6. 查看数据

在Hive中查询数据,可以看到Spark中操作的结果。

7. IDEA集成

在IDEA中集成Spark-Hive依赖。访问Maven仓库,选择第一个匹配的版本,即2.4.4,找到对应的Scala版本。

8. 配置Hive仓库路径

将hive-site.xml文件复制到resources资源包中,并修改Hive仓库路径。

hive.metastore.warehouse.dir
hdfs://192.168.221.140:9000/opt/software/hadoop/hive110/warehouse

9. MySQL权限管理

在MySQL中创建Hive账号并设置权限。

grant all on *.* to 'root'@'%' identified by 'kb10';grant all on *.* to 'root'@'localhost' identified by 'kb10';flush privileges;

10. IDEA代码示例

以下是IDEA中可以使用的连接示例:

object HiveSpark {    def main(args: Array[String]): Unit = {        val spark = SparkSession.builder()            .master("local[4]")            .appName(this.getClass.getSimpleName)            .enableHiveSupport()            .getOrCreate()                spark.sql("show databases").show()    }}

二、Spark集成MySQL

在本节中,我们将详细介绍如何将Spark与MySQL进行集成。

1. 数据库连接配置

val url = "jdbc:mysql://192.168.221.140:3306/exam"val tableName = "cron_test"val prop = new java.util.Propertiesprop.setProperty("user", "root")prop.setProperty("password", "kb10")prop.setProperty("driver", "com.mysql.jdbc.Driver")

2. 读取数据

从MySQL中读取数据并显示。

val jdbcDF = spark.read.jdbc(url, tableName, prop)jdbcDF.show

3. 写入数据

将数据写入MySQL中。

jdbcDF.write.mode("append").jdbc(url, "t2", prop)

以上就是详细的配置与操作步骤,希望对您有所帮助!

转载地址:http://jwqb.baihongyu.com/

你可能感兴趣的文章
Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
查看>>
Python:矩形参数无效
查看>>
Python:语法进阶
查看>>
Python:调用复制函数时调用 Python 对象时超出了最大递归深度
查看>>
Python:这两个 import 语句有什么区别?
查看>>
Python:通过串口从 Velleman k8090 读取数据
查看>>
python:遍历具有列表值的字典
查看>>
Python:降低精度 pandas 时间戳数据帧
查看>>
python:非阻塞子进程,检查标准输出
查看>>
PythonABC多重继承
查看>>
Pythonargparse中的多个参数
查看>>
Python关于 *args 和 **kwargs 参数的详解(全)
查看>>
Pythonfrozenset散列算法/实现
查看>>
PythonGTK+3:通过单击列对树视图进行排序
查看>>
pythonnumpy生成二进制流_python/numpy生成的二进制文件,由C读取
查看>>
pythonsign函数_对python函数签名的方法详解 用python怎么写一个自签名证书
查看>>
PythonStudy
查看>>
Pythons__IMPORT__未按预期工作
查看>>
Pythont通过request以及BeautifulSoup爬取几千条情话
查看>>
pythonweb django的学习
查看>>