Apache spark Spark Sql JDBC支持

Apache spark Spark Sql JDBC支持,apache-spark,Apache Spark,目前,我们正在构建一个报告平台,作为使用Shark的数据存储。由于Shark的开发已经停止,所以我们正处于评估Spark SQL的阶段。根据我们的用例,我们有几个问题 1我们有来自不同来源的数据MySQL、Oracle、Cassandra、Mongo。我们想知道如何将这些数据导入Spark SQL?是否存在我们可以使用的实用程序?此实用工具是否支持连续刷新数据存储区上新添加/更新/删除的数据同步以激发SQL 2是在Spark SQL中创建多个数据库的一种方法吗 3对于报告UI,我们使用Jaspe

目前,我们正在构建一个报告平台,作为使用Shark的数据存储。由于Shark的开发已经停止,所以我们正处于评估Spark SQL的阶段。根据我们的用例,我们有几个问题

1我们有来自不同来源的数据MySQL、Oracle、Cassandra、Mongo。我们想知道如何将这些数据导入Spark SQL?是否存在我们可以使用的实用程序?此实用工具是否支持连续刷新数据存储区上新添加/更新/删除的数据同步以激发SQL

2是在Spark SQL中创建多个数据库的一种方法吗

3对于报告UI,我们使用Jasper,我们希望从Jasper连接到Spark SQL。当我们进行初始搜索时,我们知道目前不支持消费者通过JDBC连接Spark SQL,但在未来的版本中,您希望添加相同的内容。我们想知道Spark SQL何时会有一个支持JDBC的稳定版本?同时,我们从中获取了源代码,但在本地设置和评估时遇到了一些困难。如果您能帮助我们提供安装说明,那就太好了。我可以分享我们面临的问题。请让我知道我可以在哪里发布错误日志

4我们还需要一个SQL提示符来执行查询,目前Spark Shell提供了SCALA提示符来执行SCALA代码,从SCALA代码我们可以启动SQL查询。像Shark一样,我们希望在Spark SQL中使用SQL提示符。当我们进行搜索时,我们发现在Spark的未来版本中会添加此项。如果您能告诉我们Spark的哪个版本可以解决同样的问题,那就太好了

我可以回答1:

ApacheSqoop是专门为解决关系数据库的这个问题而设计的。该工具是为HDFS、HBase和Hive开发的——因此,它可以通过HDFS和Hive metastore将数据提供给Spark

我相信Cassandra可以通过DataStax的这个连接器访问SparkContext,我从未使用过这个连接器


我不知道MongoDB有任何连接器。

Spark SQL是Spark框架的一种功能。它不应该与Shark相比,因为Shark是一种服务。回想一下,使用Shark,您运行一个ThriftServer,然后可以从Thrift应用程序甚至ODBC连接到该服务器

您能详细说明一下将这些数据输入Spark SQL是什么意思吗?

至于

3 Spark 1.1为SparkSQL ThriftServer接口提供了更好的支持,您可能希望将其用于JDBC接口。支持v的配置单元JDBC客户端。0.12.0能够与该服务器进行连接和接口

4 Spark 1.1还提供了可用于输入查询的SparkSQL CLI接口。以与Hive CLI或黑斑羚壳相同的方式

请提供更多关于1和2的详细信息

1我们有来自不同来源的数据MySQL、Oracle、Cassandra、Mongo

对于每种情况,您必须使用不同的驱动程序。对于cassandra,我遇到了一些SparkSQL的兼容性问题。对于任何SQL系统,都可以使用JdbcRDD。用法很简单,请看:

但它只是一个RDD,所以您应该通过MapReduceAPI处理这些数据,而不是在SQLContext中

是否存在我们可以使用的实用程序


有ApacheSqoop项目,但它处于活动开发状态。当前的稳定版本甚至没有以拼花格式保存文件。

有两个Spark-MongoDB连接器: -用于hadoop的mongodb连接器实际上根本不需要hadoop

Stratio mongodb连接器
如果您的数据非常庞大,需要执行大量转换,那么Spark SQL可以用于ETL目的,否则presto可以解决所有问题。逐一解决您的问题:

由于您的数据位于MySQL、Oracle、Cassandra和Mongo中,所有这些都可以集成到Presto中,因为它具有用于所有这些数据库的连接器

在集群模式下安装Presto后,您可以在一个平台上同时查询所有这些数据库,该平台还提供了连接来自Cassandra的表和来自Mongo的其他表的功能,这种灵活性是无与伦比的

Presto可用于连接到Apache超集,该超集是开源的,并提供全套仪表板。也可以将Presto连接到Tableau

您可以使用presto连接详细信息安装MySQL workbench,这有助于在一个位置为所有数据库提供UI


您好,我正在尝试将数据从ApacheSpark存储到mysql。你的问题有什么解决办法吗?如果是,请分享您是如何在spark和mysql之间建立通信的?这对我将是一个很大的帮助。谢谢
test("basic functionality") {
    sc = new SparkContext("local", "test")
    val rdd = new JdbcRDD(
      sc,
      () => { DriverManager.getConnection("jdbc:derby:target/JdbcRDDSuiteDb") },
      "SELECT DATA FROM FOO WHERE ? <= ID AND ID <= ?",
      1, 100, 3,
      (r: ResultSet) => { r.getInt(1) } ).cache()

    assert(rdd.count === 100)
    assert(rdd.reduce(_+_) === 10100)
  }