【问题标题】:what's SparkSQL SQL query to write into JDBC table?写入 JDBC 表的 SparkSQL SQL 查询是什么?
【发布时间】:2016-07-10 05:18:55
【问题描述】:

用于 Spark 中的 SQL 查询。

对于读取,我们可以通过读取jdbc

CREATE TEMPORARY TABLE jdbcTable
USING org.apache.spark.sql.jdbc
OPTIONS dbtable ...;

对于写入,使用 SQL 将数据写入远程 JDBC 表的查询是什么?

注意:我希望它是 SQL 查询。 请提供在使用 SparkSQL 的 HiveContext.sql(...) 时可以写入 jdbc 的纯“SQL 查询”。

【问题讨论】:

    标签: jdbc apache-spark hive apache-spark-sql hiveql


    【解决方案1】:

    INSERT OVERWRITE TABLE 将使用 JDBC 连接写入您的数据库:

    DROP TABLE IF EXISTS jdbcTemp;
    CREATE TABLE jdbcTemp
    USING org.apache.spark.sql.jdbc
    OPTIONS (...);
    
    INSERT OVERWRITE TABLE jdbcTemp
    SELECT * FROM my_spark_data;
    DROP TABLE jdbcTemp;
    

    【讨论】:

    • 这对我有用。其他答案不使用 Spark SQL。
    【解决方案2】:
    // sc is an existing SparkContext.
    val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
    
    sqlContext.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)")
    sqlContext.sql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src")
    

    【讨论】:

      【解决方案3】:

      是的,你可以。如果要将数据框保存到现有表中,可以使用

      df.insertIntoJDBC(url, table, overwrite)
      

      如果你想创建新表来保存这个数据框,你可以使用

      df.createJDBCTable(url, table, allowExisting)
      

      【讨论】:

        【解决方案4】:

        您可以使用 jdbc 编写数据帧,如下所示。

        df.write.jdbc(url, "TEST.BASICCREATETEST", new Properties)
        

        【讨论】:

          猜你喜欢
          • 2014-01-18
          • 1970-01-01
          • 2022-01-19
          • 1970-01-01
          • 2020-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多