Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Use SparkSession.sql() com JDBC


O Spark pode ler e escrever dados de/para bancos de dados relacionais usando a fonte de dados JDBC (como você fez em seu primeiro exemplo de código).

Além disso (e completamente separadamente), o spark permite usar SQL para consultar visualizações que foram criados sobre dados que já foram carregados em um DataFrame de alguma fonte. Por exemplo:
val df = Seq(1,2,3).toDF("a") // could be any DF, loaded from file/JDBC/memory...
df.createOrReplaceTempView("my_spark_table")
spark.sql("select a from my_spark_table").show()

Apenas "tabelas" (chamadas visualizações, a partir do Spark 2.0.0) criadas dessa maneira podem ser consultadas usando SparkSession.sql .

Se seus dados estiverem armazenados em um banco de dados relacional, o Spark terá que lê-los primeiro e só então poderá executar qualquer computação distribuída na cópia carregada. Conclusão - podemos carregar os dados da tabela usando read , crie uma visualização temporária e consulte-a:
ss.read
  .format("jdbc")
  .option("url", "jdbc:mysql://127.0.0.1/database_name")
  .option("dbtable", "schema.tablename")
  .option("user", "username")
  .option("password", "password")
  .load()
  .createOrReplaceTempView("my_spark_table")

// and then you can query the view:
val df = ss.sql("select * from my_spark_table where ... ")