Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql spark代码从数据库中获取表_Mysql_Scala_Apache Spark_Dataframe_Spark Dataframe - Fatal编程技术网

Mysql spark代码从数据库中获取表

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

我不熟悉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 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进行一些过滤。。我只是想知道,而不是通过硬编码为每个表创建数据帧。还有其他方法吗?检查我的答案,希望对你有所帮助!