AWS EMR Zeppelin缺少MYSQL解释器

时间:2017-09-19 01:25:55

标签: amazon-web-services emr amazon-emr apache-zeppelin

我在AWS上使用Zeppelin启动了一个全新的AWS EMR Spark群集来查询MYSQL数据库。当我尝试在Zeppelin中添加MYSQL解释器时,该选项不存在。我用谷歌搜索找到一种方法来显示解释器,但我没有找到解决方案。如何在Zeppelin中获取MYSQL解释器,以便查询MYSQL数据库?

enter image description here

1 个答案:

答案 0 :(得分:4)

Spark SQL支持SQL:2003SQL:2011 [1] [2] 的许多功能,您可以考虑通过Spark实现这一功能Zeppelin通过添加依赖。

  1. 获取具有正确版本的mysql连接器
  2. 将它作为依赖项添加到Zeppelin上的Spark解释器。 (我把jar放在主机上) enter image description here
  3. 您现在应该能够访问MySQL表。以下是使用Scala API的示例:

    /* Database Configuration*/
    val jdbcURL = s"jdbc:mysql://${HOST}/${DATABASE}"
    val jdbcUsername = s"${USERNAME}"
    val jdbcPassword = s"${PASSWORD}"
    
    import java.util.Properties
    val connectionProperties = new Properties()
    connectionProperties.put("user", jdbcUsername)
    connectionProperties.put("password", jdbcPassword)
    connectionProperties.put("driver", "com.mysql.cj.jdbc.Driver")
    
    /* Read Data from MySQL */
    val desiredData = spark.read.jdbc(jdbcURL, "${TABLE NAME}", connectionProperties)
    desiredData.printSchema
    
    /* Data Manipulation */
    desiredData.createOrReplaceTempView("desiredData")
    val query = s"""
    SELECT COUNT(*) AS `Record Number`
    FROM desiredData
    """
    spark.sql(query).show
    
    val query2 = s"""
    SELECT ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column1, column2) AS column3
    FROM desiredData
    """
    spark.sql(query2).show
    .
    .
    .
    
  4. 测试说明:

    1. EMR:emr-5.10.0,Pig 0.17.0,Zeppelin 0.7.3,Spark 2.2.0
    2. MySQL:MariaDB 5.2.10
    3. 参考

      1. Apache Hive(n.d。)。 主页。 [在线] Cwiki.apache.org。可在:https://cwiki.apache.org/confluence/display/Hive/Home [2017年12月1日访问]获取。
      2. Apache Spark(n.d。)。 与Apache Hive的兼容性。 [在线] spark.apache.org。可在:https://spark.apache.org/docs/latest/sql-programming-guide.html#compatibility-with-apache-hive [2017年12月1日访问]获取。