Java Spark读取MySQL
时间: 2023-12-31 17:03:43 浏览: 81
Spark与Mysql的交互
5星 · 资源好评率100%
Spark可以通过JDBC驱动程序读取MySQL数据库。以下是示例代码:
1. 首先,导入必要的依赖项:
```java
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
```
2. 设置Spark配置和创建SparkContext:
```java
SparkConf conf = new SparkConf().setAppName("Read from MySQL").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
```
3. 编写从MySQL读取数据的函数:
```java
public static JavaRDD<String> readFromMySQL(String tableName) throws Exception {
// MySQL连接信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 建立MySQL连接
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行查询语句
String sql = "SELECT * FROM " + tableName;
ResultSet rs = stmt.executeQuery(sql);
// 将结果集转换为RDD
List<String> rows = new ArrayList<>();
while (rs.next()) {
rows.add(rs.getString(1) + "," + rs.getString(2));
}
JavaRDD<String> rdd = sc.parallelize(rows);
// 关闭连接
rs.close();
stmt.close();
conn.close();
return rdd;
}
```
4. 调用函数并处理数据:
```java
JavaRDD<String> rdd = readFromMySQL("employees");
rdd.foreach(row -> System.out.println(row));
```
以上代码将从MySQL中的employees表中读取数据,并将其打印到控制台上。您可以根据自己的需要进一步处理数据,例如将它们转换为DataFrame或DataSet。
阅读全文