如何在Apache Spark中执行sql查询

时间:2016-11-28 10:21:53

标签: sql apache-spark

我是 Apache Spark 的新手。
我已经在我的本地Windows机器上配置了spark 2.0.2。 我用spark的“字数”例子做了。
现在,我在执行SQL查询时遇到了问题。 我搜索过相同的内容,但没有得到适当的指导。


任何帮助非常感谢!
谢谢高级!!

2 个答案:

答案 0 :(得分:5)

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

在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()

P.S:如果使用DataFrame Api会更好,如果使用DataSet Api会更好,但是对于那些你需要浏览文档的人来说。

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

答案 1 :(得分:4)

在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()