Mysql spark代码从数据库中获取表
我不熟悉spark和scala。 问题是我想获取数据库中所有表的全部数据。 我写了一个代码,可以获取一个特定的表 但是,我是否可以只传递数据库名称,然后从所有表中获取数据 例如:Mysql spark代码从数据库中获取表,mysql,scala,apache-spark,dataframe,spark-dataframe,Mysql,Scala,Apache Spark,Dataframe,Spark Dataframe,我不熟悉spark和scala。 问题是我想获取数据库中所有表的全部数据。 我写了一个代码,可以获取一个特定的表 但是,我是否可以只传递数据库名称,然后从所有表中获取数据 例如: val driver = "com.mysql.jdbc.Driver" val url="jdbc:mysql://127.0.0.1:3306/mydb" val username = "root" val password = "*******" val prop=new Properties() val
val driver = "com.mysql.jdbc.Driver"
val url="jdbc:mysql://127.0.0.1:3306/mydb"
val username = "root"
val password = "*******"
val prop=new Properties()
val conf=new SparkConf().setAppName("Read From SQl").setMaster("local[*]")
val sc=new SparkContext(conf)
val sqlContext=new SQLContext(sc)
prop.setProperty("user", "root")
prop.setProperty("password", "lasitpant")
val df: org.apache.spark.sql.DataFrame =sqlContext.read.jdbc(url, "store_details",prop)
df.createOrReplaceTempView("store_details")
df.schema.printTreeString()
以上代码仅获取特定表的数据
基本上我想从mysql中提取数据,然后使用spark
sql做一些过滤。。我只是好奇,而不是创造
通过硬编码为每个表提供数据帧。还有别的办法吗
周围
information\u schema.tables
是将表列表加载为
在下面的示例程序中解释。。。你可以试试下面的方法。。
下面是代码片段
val dfTableList = loadTable(url
, "information_schema.tables"
, user
, pass);
tableList.map { tableName =>
val df = loadTable(url
, schemeName+"."+tableName
, user
, pass
, driverName)
if (df.isDefined){
// do what ever you want to do
df.get.unpersist() //remove form cache
}
}
基本步骤
1) 首先获取所有表列表2) 映射每个表以从下面的代码片段中获取数据帧
val dfTableList = loadTable(url
, "information_schema.tables"
, user
, pass);
tableList.map { tableName =>
val df = loadTable(url
, schemeName+"."+tableName
, user
, pass
, driverName)
if (df.isDefined){
// do what ever you want to do
df.get.unpersist() //remove form cache
}
}
注意:我使用的是spark 1.6,看起来您使用的是>1.6,所以有些语法可能会有所不同,但方法是相同的。
最终的代码示例如下所示。。在以下情况下
我正在保存拼花文件。您可以忽略这一点并实施您的
自定义逻辑
这似乎是联合国的事情。您希望如何处理所有转换为dataframe的表数据?我的意思是它的目的是什么?基本上我想从mysql中提取数据,然后使用spark sql进行一些过滤。。我只是想知道,而不是通过硬编码为每个表创建数据帧。还有其他方法吗?检查我的答案,希望对你有所帮助!