【问题标题】: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;
【解决方案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)