Как преобразовать искровой dataframe в SQL-запрос? - PullRequest
0 голосов
/ 11 марта 2019

Теперь у меня есть данные в искровом фрейме данных, я хочу преобразовать их обратно в SQL, чтобы провести некоторый анализ. У кого-нибудь есть идеи, как я могу это сделать? как df.to_sql (...)?

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Вы можете использовать оператор explain, см. эту ссылку .

0 голосов
/ 11 марта 2019

Вы можете использовать DataFrame как SQL, используя Spark-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()

Даже функция sql в SparkSession позволяет программам запускать запросы 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|
+------+---+------+---------------+

См. Документацию Spark.

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...