使用Java的Spark mongdb数据

时间:2016-06-13 15:06:40

标签: java mongodb apache-spark pyspark

我在这里跟踪了文档Stratio JAVA spark mongdob项目,但我的代码在打印Check1后卡住了。我只是无法弄清楚我做错了什么。

    JavaSparkContext sc = new JavaSparkContext("local[*]", "test spark-mongodb java"); 
    SQLContext sqlContext = new SQLContext(sc); 

    Map options = new HashMap(); 
    options.put("host", "host:port"); 
    options.put("database", "database");
    options.put("collection", "collectionName");
    options.put("credentials", "username,database,password");

    System.out.println("Check1");
    DataFrame df =     sqlContext.read().format("com.stratio.datasource.mongodb").options(options).load();

    df.count();
    df.show();

我的pom文件如下:

<dependencies>

    <dependency>
        <groupId>com.stratio.datasource</groupId>
        <artifactId>spark-mongodb_2.11</artifactId>
        <version>0.11.1</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>1.5.2</version>
        <type>jar</type>
    </dependency>
        <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>1.5.2</version>
        <type>jar</type>
    </dependency>

</dependencies>

我检查了依赖树,一切看起来都很好。

2 个答案:

答案 0 :(得分:2)

您报告的内容是已知错误,已在0.11.2版本中解决。

这个错误是一些内部Akka演员没有被终止的原因。 结合默认的Akka设置使actor系统非守护进程阻止了应用程序关闭。

您有两种方法可以解决问题:

  • 将您的版本升级至0.11.2
  • 将项目application.conf文件夹设置下的resources文件包含在actor系统守护程序中。也就是说,具有以下内容:

    akka {

    daemonic = on

    }

答案 1 :(得分:0)

我将回答我的问题,希望它可以帮助某人。

我终于设法解决了这个问题。这些火花库最糟糕的是库版本之间存在巨大差异,其中许多版本彼此不兼容:

public class TestClass {
    JavaSparkContext sc = new JavaSparkContext("local[*]", "test spark-mongodb java"); 
    SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);

    Map options = new HashMap(); 
    options.put("host", "localhost:27017"); 
    options.put("database", "test"); 
    options.put("collection", "mycol"); 

    DataFrame df = sqlContext.read().format("com.stratio.datasource.mongodb").options(options).load(); 
    df.registerTempTable("mycol"); 
    sqlContext.sql("SELECT * FROM mycol"); 
    df.show(); 
}

我的pom文件如下:

 <dependency>
        <groupId>com.stratio.datasource</groupId>
        <artifactId>spark-mongodb_2.10</artifactId>
        <version>0.11.2</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.6.1</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.10</artifactId>
        <version>1.6.1</version>
        <type>jar</type>
    </dependency>