小编Bla*_*ven的帖子

如何在Spark SQL中创建永久表

在我的项目中,我正在将数据从MongoDB传输到SparkSQL表以进行基于SQL的查询。但是Spark SQL让我创建了临时文件。当我要查询某些内容时,执行时间非常长,因为数据传输和映射操作会花费太多时间。

那么,我可以减少执行时间吗?我可以创建永久性Spark SQL表吗?我可以使用JDBC查询永久表吗?

我要添加代码和执行时间结果。我正在独立模式下执行所有操作。

package com.mongodb.spark.sql;

import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
import org.bson.BSONObject;

import com.mongodb.hadoop.MongoInputFormat;
import com.mongodb.spark.demo.Observation;
import com.mongodb.spark.demo.Sensor;

import scala.Tuple2;

public class SparkSqlMongo {

public static void main(String[] args) {

    Configuration conf = new Configuration();

    conf.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    conf.set("mongo.input.uri", "mongodb://localhost:27017/test.observations");

    Configuration sensConf = new Configuration();

    sensConf.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    sensConf.set("mongo.input.uri", "mongodb://localhost:27017/test.sens");

    SparkConf sconf = new SparkConf().setMaster("local[2]").setAppName("SQL DENEME").set("nsmc.connection.host",
            "mongodb:");

    JavaSparkContext sc = new JavaSparkContext(sconf);
    SQLContext sql = new SQLContext(sc); …
Run Code Online (Sandbox Code Playgroud)

java apache-spark apache-spark-sql

3
推荐指数
1
解决办法
4862
查看次数

在MongoDB聚合中返回整个对象

我有项目架构,其中我有各自餐厅的项目详细信息.我必须通过'类型'和'类别'找到特定餐厅和团体的所有项目(类型和类别是项目架构中的字段),我能够按照我的要求对项目进行分组,但我无法获得完整的项目宾语.我的查询:

db.items.aggregate([{
    '$match': {
        'restaurant': ObjectId("551111450712235c81620a57")
    }
}, {
    '$group': {
        id: {
            '$push': '$_id'
        }
        , _id: {
            type: '$type'
            , category: '$category'
        }
    }
}, {
    $project: {
        id: '$id'
    }
}])
Run Code Online (Sandbox Code Playgroud)

我已经看到一种方法,通过将每个字段值添加到组然后投影它.因为我的Item模式中有很多字段,所以我觉得这对我来说不是很好的解决方案,我是否可以获得完整的对象而不是Ids.

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
3144
查看次数

如何在Mongoose中检索嵌入文档中数组的最后一个对象?

我在编写查询时遇到问题,无法检索Story文档中嵌入的Comments数组的最后一个对象.

当我执行db.stories.find()时,我的集合目前看起来像这样:

{
"_id" : ObjectId("55d3a39565698bbc68079e31"),
"author" : "Steven Chen",
"link" : "COCO",
"title" : "COCO",
"date" : ISODate("2015-08-18T21:28:53.629Z"),
"comments" : [
    {
        "author" : "Steven",
        "text" : "Major",
        "_id" : ObjectId("55d3a39565698bbc68079e32"),
        "date" : ISODate("2015-08-18T21:28:53.632Z")
    },
    {
        "text" : "Canada",
        "author" : "Steven",
        "_id" : ObjectId("55d3a39a65698bbc68079e33"),
        "date" : ISODate("2015-08-18T21:28:58.001Z")
    },
    {
        "text" : "Usa",
        "author" : "Steven",
        "_id" : ObjectId("55d3a39c65698bbc68079e34"),
        "date" : ISODate("2015-08-18T21:29:00.877Z")
    }
],
"__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

我想根据Story文档的_id给出的日期检索最后一条评论.

我的代码的上下文是有一个带有注释列表的Story帖子,我想检索最后的注释并使用ajax将其作为JSON发送到我的客户端JS,以便可以使用最新/最新注释更新视图.

在这种情况下,带有"text:"Usa"的评论应该是获取的评论.

有人可以提供正确的方法来做到这一点,如果你能解释原因会更好吗?谢谢!

mongoose mongodb node.js mongodb-query

3
推荐指数
1
解决办法
2832
查看次数

使用 mongo Java Driver 3.0 从 Mongo 集合中获取字段的不同值时出现异常

我从 mongodb 获得了不同的字段值。当我在命令行中运行以下查询时,效果很好。 db.celldata.distinct("tenentId")

我正在使用 Mongo java 3.0 驱动程序,使用以下查询检索不同的值 MongoCursor<String> iterator = coll.distinct("tenantId", String.class).iterator();

当我运行查询时,出现以下异常 org.bson.BsonInvalidOperationException: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is NULL.

java mongodb mongodb-java mongodb-query

3
推荐指数
1
解决办法
2723
查看次数

是否有一个很好的例子lodash的_.after方法

有没有一个很好的实际例子,说明如何在lodash库中使用_.after方法?

javascript lodash

3
推荐指数
1
解决办法
1473
查看次数

将没有现有字段的文档排序到结果的结尾

我有以下文件,很少有文件只有bids字段.

采集:

   { 
        "_id" : "PqwSsLb2jsqTycMWR", 
        "name" : "aaa", 
        "bids" : [
            {
                "amount" : NumberInt(450)
            }
        ]
    }
    { 
        "_id" : "93EDoQfeYEFk8pyzX", 
        "name" : "bbb"
    }
    { 
        "_id" : "j5wkK5Eagnwuo8Jym", 
        "name" : "ccc", 
        "bids" : [
            {
                "amount" : NumberInt(520)
            }
        ]
    }
    { 
        "_id" : "eLaTyM5h5kqA97WQQ", 
        "name" : "ddd"
    }
Run Code Online (Sandbox Code Playgroud)

如果我排序bids.amount : 1得到低于结果

结果:

   { 
       "_id" : "93EDoQfeYEFk8pyzX", 
       "name" : "bbb"
   }
   { 
       "_id" : "eLaTyM5h5kqA97WQQ", 
       "name" : "ddd"
   }
   { 
        "_id" : "PqwSsLb2jsqTycMWR", …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
1214
查看次数

MongoDB 在字典列表中查找查询

我有一个如下的集合

            {
            "state" : "VIC",
            "sites" : 
            [
                {
                    "name" : "VIC01",
                    "pes" :
                        [
                            {
                                "id" : "1",
                                "longname" : "rdnvej300exh0443",
                                "shortname" : "RVE4-E-043",
                                "location" : "Exhibition"
                            },
                            {
                                "id" : "2",
                                "longname" : "rdnvej160pee0343",
                                "shortname" : "RV3W-E-043",
                                "location" : "Windsor"
                            },
                            {
                                "id" : "3",
                                "location" : "my home"
                            }
                        ],
                    "partners" :
                        [
                            {
                                "id" : "REACH",
                                "fnns" : ["N54321R","N24686R","N46818R","N10461R"]
                            },
                            {
                                "id" : "NCS_CORE",
                                "fnns" : [ "N54320R","N71311R","N35797R","N57919R"]
                            }
                        ]           
                },

                {
                    "name" : "CLAYTON",
                    "pes" …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
5676
查看次数

MongoDB从两个数组(排序和限制)计算值

我有一个存储浮点数组的MongoDB数据库。假设采用以下格式的文档集合:

{
    "id" : 0,
    "vals" : [ 0.8, 0.2, 0.5 ]
}
Run Code Online (Sandbox Code Playgroud)

有一个查询数组(例如具有values)[ 0.1, 0.3, 0.4 ],我想为集合中的所有元素计算距离(例如,差异之和;对于给定的文档和查询,将由计算abs(0.8 - 0.1) + abs(0.2 - 0.3) + abs(0.5 - 0.4) = 0.9)。

我试图使用MongoDB的聚合函数来实现这一点,但是我无法解决如何遍历数组的问题。(我没有使用MongoDB的内置geo操作,因为数组可能很长)

我还需要对结果进行排序并将其限制在前100位,因此不需要读取数据后进行计算。

mapreduce mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
458
查看次数

部分备份/恢复集合

我目前正在使用 AWS EC2 服务器,并且抓取了一些存储在 MongoDB 集合中的数据。这是我的数据库中唯一的集合。

现在我需要将此集合传输到我的本地计算机上进行处理。我的问题是远程计算机上的剩余磁盘空间不足以转储整个集合。空间可容纳约 60% 的藏品。我尝试使用db.copy()主机db.export()名直接在本地计算机上进行复制,但它不起作用,因为我不在本地网络上,而且即使使用 ssh 隧道,也存在一些身份验证问题。

我想做的是将我的大集合分成 2 个较小的集合并转储每个集合。是否可以?

谢谢你!

amazon-ec2 mongodb

2
推荐指数
1
解决办法
2177
查看次数

MongoDB,Mongoose来自一个Find来搜索另一个集合

我知道这违反了MongoDB及其No-SQL模型的设计,但我试图在一个集合中查找Documents,然后使用结果中的ID字段来查找另一个集合中的相应记录.有效地尝试模拟联接.

//query is irrelevant to question
var results = collectionOne.find(query).limit(limit);

var a = [];

results.forEach(function(r)
{
    var aquery = { id : {$eq : r.id}};
    collectionTwo.find(aquery).limit(limit).exec(function, b)
    {
        if (err)
        {
            res.render('error',
            {
                status :  500
            });
        }
        else
        {
            a.push(b);
        }
   });
});
res.jsonp(a);
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongodb-query

2
推荐指数
1
解决办法
3604
查看次数