AWS EMR Zeppelin 缺少 MYSQL 解释器

AWS EMR Zeppelin is missing MYSQL interpreter

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

Spark SQL 支持 SQL:2003SQL:2011 [ 1][2][=38 的许多特性=],您可以考虑通过添加依赖项在 Zeppelin 上通过 Spark 来做到这一点。

  1. 获取 mysql 正确版本的连接器
  2. 将其添加为 Zeppelin 上的 Spark 解释器的依赖项。 (我把罐子放在主机上)
  3. 您现在应该可以访问 MySQL table。以下是使用 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
    .
    .
    .
    

测试说明:

  1. EMR:带有 Pig 0.17.0、Zeppelin 0.7.3 和 Spark 2.2.0 的 emr-5.10.0
  2. MySQL:MariaDB 5.2.10

参考资料

  1. Apache 配置单元(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 日访问]。