如何将Spark DataFrame转换为SQL查询



现在,我在Spark DataFrame中有数据,我想转换回SQL以进行一些分析。有人知道我该怎么做吗?像df.to_sql(...)?

谢谢!

您可以使用explain操作员,请参阅此链接。

尝试以下:

df.write.option('header','true').saveAsTable("my_sql_table")

然后,您可以使用SQL在My_sql_table上查询。

您可以使用SPARK-SQL将数据框架作为SQL捕获。

val df = Seq(("Edward", 1, 1000,"me1@example.com"),
                ("Michal",2,15000,"me1@example.com"),
                ("Steve",3,25000,"you@example.com"),
                ("Jordan",4,40000, "me1@example.com")).
      toDF("Name", "ID", "Salary","MailId")
OR
val df = spark.read.json("examples/src/main/resources/employee.json")
// Displays the content of the DataFrame to stdout
df.show()
+------+---+------+---------------+
|  Name| ID|Salary|         MailId|
+------+---+------+---------------+
|Edward|  1|  1000|me1@example.com|
|Michal|  2| 15000|me1@example.com|
| Steve|  3| 25000|you@example.com|
|Jordan|  4| 40000|me1@example.com|
+------+---+------+---------------+

使用$ -Notation

需要此导入
import spark.implicits._
// Print the schema in a tree format
df.printSchema()
// Select only the "name" column
df.select("name").show()
// Select employees whose salary > 15000
df.filter($"Salary" > 15000).show()

SPARPSESSION上的SQL函数甚至可以使应用程序以编程方式运行SQL查询,并将结果返回为DataFrame。

// Register the DataFrame as a SQL temporary view
df.createOrReplaceTempView("employee")
    val sqlDF = spark.sql("SELECT * FROM employee")
    sqlDF.show()
+------+---+------+---------------+
    |  Name| ID|Salary|         MailId|
    +------+---+------+---------------+
    |Edward|  1|  1000|me1@example.com|
    |Michal|  2| 15000|me1@example.com|
    | Steve|  3| 25000|you@example.com|
    |Jordan|  4| 40000|me1@example.com|
    +------+---+------+---------------+

Spark SQL中的临时视图将被播放,如果创建的会话终止,则会消失。如果您想在所有会话之间共享一个临时视图并保持生命直到Spark应用程序终止,则可以创建全局临时视图。

// Register the DataFrame as a global temporary view
df.createGlobalTempView("employee")
// Global temporary view is tied to a system preserved database `global_temp`
spark.sql("SELECT * FROM global_temp.employee").show()
+------+---+------+---------------+
|  Name| ID|Salary|         MailId|
+------+---+------+---------------+
|Edward|  1|  1000|me1@example.com|
|Michal|  2| 15000|me1@example.com|
| Steve|  3| 25000|you@example.com|
|Jordan|  4| 40000|me1@example.com|
+------+---+------+---------------+

请参阅火花文档。

https://spark.apache.org/docs/2.3.0/sql-programming-guide.html

希望它有帮助!

相关内容

  • 没有找到相关文章

最新更新