繁体   English   中英

如何在 Apache Spark 中执行 sql 查询

[英]How to Execute sql queries in Apache Spark

我对Apache Spark陌生
我已经在我的本地 Windows 机器上配置了 spark 2.0.2。 我已经完成了带有火花的“字数统计”示例。
现在,我在执行 SQL 查询时遇到了问题。 我已经搜索了相同的内容,但没有得到适当的指导。

所以你需要做这些事情来完成它,

在 Spark 2.0.2 中,我们有 SparkSession,它包含 SparkContext 实例和 sqlContext 实例。

因此,步骤将是:

第 1 步:创建 SparkSession

val spark = SparkSession.builder().appName("MyApp").master("local[*]").getOrCreate()

第 2 步:在您的案例中从数据库加载 Mysql。

val loadedData=spark
      .read
      .format("jdbc")
      .option("url", "jdbc:mysql://localhost:3306/mydatabase")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("mytable", "mydatabase")
      .option("user", "root")
      .option("password", "toor")
      .load().createOrReplaceTempView("mytable")

第 3 步:现在您可以像在 SqlDatabase 中一样运行 SqlQuery。

val dataFrame=spark.sql("Select * from mytable")
dataFrame.show()

PS:如果你使用DataFrame Api的会更好,如果DataSet Api的甚至更好,但对于那些你需要阅读文档的人。

文档链接: https : //spark.apache.org/docs/2.0.0/api/scala/index.html#org.apache.spark.sql.Dataset

在 Spark 2.x 中,您不再引用sqlContext ,而是引用spark ,因此您需要执行以下操作:

spark
  .read
  .format("jdbc")
  .option("url", "jdbc:mysql://localhost:3306/mydb")
  .option("driver", "com.mysql.jdbc.Driver")
  .option("dbtable", "mydb")
  .option("user", "root")
  .option("password", "")
  .load()

现在在 spark 中进行 SQL 查询相当简单。 正如其他人指出的那样,您可以对数据帧执行 SQL,但问题实际上是如何执行 SQL。

spark.sql("SHOW TABLES;")就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM