Spark操作Mysql和Hive

本文介绍了如何使用Spark SQL通过JDBC从MySQL加载数据,并展示了在Spark Shell中执行查询的步骤,同时注意到连接时可能出现的错误及解决方法。接着,文章讨论了Spark与Hive的集成,包括添加hive-site.xml配置文件到Spark conf以及启动metastore服务的不同方式,以实现SparkSQL与Hive元数据的交互。

1.Mysql

JDBC

Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。

从MySQL中加载数据(Spark Shell方式)

1.启动Spark Shell,必须指定mysql连接驱动jar包
/usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-shell \
--master spark://node1.itcast.cn:7077 \
--jars /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar \
--driver-class-path /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar
2.从mysql中加载数据
val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" ->     "jdbc:mysql://localhost:3306/test", "driver" -> "com.mysql.jdbc.Driver", "dbtable" -> "person",     "user" -> "root", "password" -> "root")).load()
3.执行查询

jdbcDF.show()

### 使用 SparkMySQL 读取数据并写入 Hive 为了实现这一目标,需先确保环境已正确配置。具体来说,在启动任何操作前,应确认 Hadoop 集群处于开启状态,并且 Hive 的仓库位于 HDFS 上,默认路径为 `/user/hive/warehouse`[^4]。 #### 创建 SparkSession 并加载必要的库 创建支持 HiveSparkSession 是至关重要的一步: ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("MySQL to Hive Example") .config("spark.master", "local") // 根据实际情况调整 master 地址 .enableHiveSupport() // 启用对 Hive 表的支持 .getOrCreate() // 加载 JDBC 其他必要驱动程序 Class.forName("com.mysql.cj.jdbc.Driver").newInstance() ``` 上述代码片段展示了如何初始化带有 Hive 支持的 Spark 应用程序实例[^1]。 #### 定义 MySQL 连接属性 定义用于连接至 MySQL 数据源所需的参数集合如下所示: ```scala val jdbcUrl = "jdbc:mysql://localhost:3306/database_name" val connectionProperties = new java.util.Properties() connectionProperties.put("user", "your_username") connectionProperties.put("password", "your_password") ``` 这里指定了数据库 URL 及访问凭证以便稍后能够顺利获取所需记录集。 #### 执行查询并将结果转换成 DataFrame 通过指定 SQL 查询语句来提取特定表格中的全部条目作为临时视图处理: ```scala val df = spark.read.jdbc(jdbcUrl, "(SELECT * FROM table_name) AS temp_table", connectionProperties) df.createOrReplaceTempView("temp_view") ``` 这段脚本会把来自关系型数据库管理系统 (RDBMS) 的结构化信息映射成本地内存对象供后续分析使用。 #### 将 DataFrame 写入 Hive 表格 最后一步就是利用 SparkSQL API 把之前准备好的中间件持久化存储于分布式文件系统之上: ```sql spark.sql(""" INSERT INTO TABLE default.target_hive_table SELECT * FROM temp_view """) ``` 以上命令实现了将先前由 MySQL 提供给我们的资料正式迁移到大数据平台内的永久位置中去[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值