我有一个非常简单架构的虚拟数据库。数据库由两个表组成,每个表两列,两列都是INT。 我已经制作了一个可以在数据框中提取数据库的火花程序:
import org.apache.spark.sql.SparkSession
object mysql_to_hdfs extends App{
val SPARK_CLUSTER_ADDRESS = "local[*]"
val APPLICATION_NAME = "mysql_to_hdfs"
val DB_URL = "jdbc:mysql://localhost:3306/practice_schema?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
val DB_USER = "root"
val DB_PWD = "root"
val HDFS_URL = ""
val sparkSession = SparkSession.builder()
.master("local[*]")
.appName(APPLICATION_NAME)
.getOrCreate()
val sc = sparkSession.sparkContext
val sqlC = sparkSession.sqlContext
val optionsMap:Map[String, String] = Map("url" -> DB_URL, "user" -> DB_USER, "password" -> DB_PWD, "dbtable" -> "table_1")
//Insert the key/Value tableName in optionsMap of the table you want to load.
val mysqlDataframe = sqlC.read.format("jdbc").options(optionsMap).load()
mysqlDataframe.show()
}
现在我必须编写将数据帧内容放在hadoop中的部分。我打算保存数据框如下:
mysqlDataframe.write.save("pathToTheFile.csv")
我还不能测试它(我还没有虚拟的hadoop),但我已经有了一些问题。
谢谢。