【问题标题】:Does Spark SQL 2.1 support write temp table or hive table to Mysql/Oracle?Spark SQL 2.1 是否支持将临时表或配置单元表写入 Mysql/Oracle?
【发布时间】:2019-03-29 04:26:06
【问题描述】:

我使用的是 Spark SQL 2.1,

我能够从 mysql/oracle 读取数据作为 Spark SQL 中的临时视图:

val url = "jdbc:mysql://localhost:3306/db1"
val user = "root"
val pass = "root"
val sql =
  s"""
      CREATE OR REPLACE TEMPORARY VIEW foobar
      USING org.apache.spark.sql.jdbc
      OPTIONS (url '$url', dbtable '(select id, name, now() from db1.company) as x', user '$user', password '$pass', numPartitions '3')
  """.stripMargin(' ')

val session = SparkSession.builder().appName("SparkSQL003").master("local[4]").getOrCreate()

session.sql(sql)

我的问题是 Spark SQL 2.1 是否支持使用纯 sql 将临时视图或 Hive 表写回 oracle/mysql

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    我在这里发布我的发现,Spark SQL 在 2.1.0 中支持此功能

      test("SparkSQL006") {
        val url = "jdbc:mysql://localhost:3306/db1"
        val user = "root"
        val pass = "root"
        val sql =
          s"""
              CREATE OR REPLACE TEMPORARY VIEW foobar
              USING org.apache.spark.sql.jdbc
              OPTIONS (url '$url', dbtable 'db1.company', user '$user', password '$pass', numPartitions '3')
          """.stripMargin(' ')
    
        val session = SparkSession.builder().appName("SparkSQL003").master("local[4]").getOrCreate()
    
        import session.implicits._
        session.createDataset(Seq((100,"IBM"), (200, "Apply"))).createOrReplaceTempView("t")
    
        session.sql(sql)
    
        session.sql(
          """
             insert into foobar select * from t
          """.stripMargin(' '))
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多