小编Sam*_*Sam的帖子

在mongoDB中进行更新的聚合

我有一个包含许多类似结构化文档的集合,两个文档看起来像

输入:

{ 
    "_id": ObjectId("525c22348771ebd7b179add8"), 
    "cust_id": "A1234", 
    "score": 500, 
    "status": "A"
    "clear": "No"
}

{ 
    "_id": ObjectId("525c22348771ebd7b179add9"), 
    "cust_id": "A1234", 
    "score": 1600, 
    "status": "B"
    "clear": "No"
}
Run Code Online (Sandbox Code Playgroud)

默认情况下clear,所有文档都是"No",

要求:我必须添加所有文件的分数cust_id,只要它们属于status "A"status "B".如果score超过2000那么我必须更新所有文档的clear属性"Yes"相同cust_id.

预期产量:

{ 
    "_id": ObjectId("525c22348771ebd7b179add8"), 
    "cust_id": "A1234", 
    "score": 500, 
    "status": "A"
    "clear": "Yes"
}

{
    "_id": ObjectId("525c22348771ebd7b179add9"), 
    "cust_id": "A1234", 
    "score": 1600, 
    "status": "B"
    "clear": "Yes"
}
Run Code Online (Sandbox Code Playgroud)

是的,因为1600 + 500 = 2100,2100> …

mongodb

21
推荐指数
4
解决办法
3万
查看次数

name node Vs secondary name node

Hadoop是一致的和分区容忍的,即它属于CAP theoram的CP类别.

Hadoop不可用,因为所有节点都依赖于名称节点.如果名称节点落下,则群集将关闭.

但考虑到HDFS集群有一个辅助名称节点,为什么我们不能将hadoop称为可用.如果名称节点已关闭,则辅助名称节点可用于写入.

名称节点和辅助名称节点之间的主要区别是什么使hadoop不可用.

提前致谢.

hadoop high-availability hdfs hadoop2

20
推荐指数
1
解决办法
4万
查看次数

在配置单元中创建模式

如何在配置单元中的用户定义的数据库下创建多个模式?

我正在尝试在hive中的DB sam_db下创建模式.我正在使用以下代码.

use sam_db;
create schema sam_db_schema;
Run Code Online (Sandbox Code Playgroud)

但是当我访问本地主机以查看文件系统时,我发现在sam_db中创建了一个名为sam_db_schema的数据库而不是创建了一个模式.

下面是我的案例的屏幕截图: 在此输入图像描述

在hive中不能存在DB的多个模式.

如果可能的话,我该如何创建它们.

hive的数据库和模式都相同.因为当我做的时候

show databases;
show schemas
Run Code Online (Sandbox Code Playgroud)

它给了我相同的输出.

请帮助我理解:提前致谢

hadoop hive hdfs

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

点词产品与词典

我试图做两个字典值的点积.例如:

dict_1={'a':2, 'b':3, 'c':5, 'd':2}
dict_2={'a':2, 'b':2, 'd':3, 'e':5 }
Run Code Online (Sandbox Code Playgroud)

在列表表单中,上面的内容如下所示:

dict_1=[2,3,5,2,0]
dict_2=[2,2,0,3,5]
Run Code Online (Sandbox Code Playgroud)

具有相同键的字典的点积将导致:

Ans= 16  [2*2 + 3*2 + 5*0 + 2*3 + 0*5]
Run Code Online (Sandbox Code Playgroud)

如何用字典实现这一目标?通过列表,我可以调用np.dot函数或编写一个小循环.

python numpy

10
推荐指数
1
解决办法
3678
查看次数

CAP与分布式系统

当我们谈论nosql分布式数据库系统时,我们知道所有这些都属于CAP theoram的三分之二.对于分布式集群,网络故障和节点故障是不可避免的,因此分区容差是必需的,因此我们从可用性和一致性中选择一个.所以它基本上是CP或AP.

我的问题是

  1. hadoop属于哪个类别.

  2. 假设我有一个具有6个节点ABC和DEF的集群,在网络故障期间,假设节点A,B,C和节点D,E,F被分成两个独立的集群.

    现在处于一致且分区容忍的系统(CP)模型中,因为节点A中的更新不会复制到节点D,系统的一致性将不允许用户更新或读取数据,直到网络再次运行,从而使数据库关闭.

    而可用和分区容忍系统将允许节点D的用户在节点A处进行更新时查看旧数据,但不保证节点D的用户获得最新数据.但是在网络再次运行一段时间之后,它将节点A的最新数据复制到节点D中,因此允许节点D的用户查看最新数据.

    从上述两种情况我们可以得出结论,在AP模型中,没有数据库进入的空间,因此即使在故障期间也允许用户进行写入和读取,并且当网络再次启动时向用户提供最新数据,那么为什么人们会选择Consistent和分区容忍模型(CP).在我看来,网络故障(AP)具有优于(CP)的优势,允许用户在(CP)下的数据库关闭时读取和写入数据.

  3. 是否有任何系统可以提供CAP,排除Cassandra最终一致性的概念.

  4. 用户何时选择可用性而不是一致性,反之亦然.是否有任何数据库允许用户在CP和AP之间相应地切换其选择.

提前致谢 :)

hadoop nosql

9
推荐指数
1
解决办法
4332
查看次数

Gensim:TypeError:doc2bow期望输入的unicode令牌数组,而不是单个字符串

我从一些python任务开始,我在使用gensim时遇到了问题.我试图从我的磁盘加载文件并处理它们(拆分它们和小写()它们)

我的代码如下:

dictionary_arr=[]
for file_path in glob.glob(os.path.join(path, '*.txt')):
    with open (file_path, "r") as myfile:
        text=myfile.read()
        for words in text.lower().split():
            dictionary_arr.append(words)
dictionary = corpora.Dictionary(dictionary_arr)
Run Code Online (Sandbox Code Playgroud)

列表(dictionary_arr)包含所有文件中所有单词的列表,然后我使用gensim corpora.Dictionary来处理列表.但是我遇到了一个错误.

TypeError: doc2bow expects an array of unicode tokens on input, not a single string
Run Code Online (Sandbox Code Playgroud)

我不明白是什么问题,一点指导将不胜感激.

python gensim

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

用随机值替换数据帧中的 NaN

我有一个带有 NaN 值的数据框 (data_train),下面给出了一个示例:

republican                n                          y   
republican                n                          NaN   
democrat                 NaN                         n
democrat                  n                          y   
Run Code Online (Sandbox Code Playgroud)

我想用一些随机值替换所有的 NaN,比如 .

republican                n                           y   
republican                n                          rnd2
democrat                 rnd1                         n
democrat                  n                           y   
Run Code Online (Sandbox Code Playgroud)

我该怎么做。

我尝试了以下操作,但没有运气:

df_rand = pd.DataFrame(np.random.randn(data_train.shape[0],data_train.shape[1]))
data_train[pd.isnull(data_train)] = dfrand[pd.isnull(data_train)]
Run Code Online (Sandbox Code Playgroud)

当我使用带有随机数字数据的数据框执行上述操作时,上述脚本工作正常。

python pandas

6
推荐指数
4
解决办法
2万
查看次数

循环遍历mongoDB中的非关联数组

我有一个集合,其中包含具有嵌套数组形式的数据的文档,其中包含不同格式的数组列表.

输入:

{ 
    "_id" : ObjectId("5262d2eaca24d995f4958083"),
    "array" : [
        {
            "name" : "sam",
            "roll" : 21 
        },  
        {
            "name" : "vam",
            "roll" : 22
        },  
        {
            "name" : "mam",
            "roll" : 23
        },  
        {
            "name" : "jam",
            "roll" : [31, 32, 33, 34]
        },
        {
            "name" : [
                {"name" : "lam" },
                {"name" : "ham" },
                {"name" : "pam" }
            ],
            "roll" :[
                {"roll" : 41},
                {"roll" : 42},
                {"roll" : 43}
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

(在上面的代码中,数组[4]与其前辈相比具有不同的格式)

我想获得数组[4]的所有名称,即lam,ham,pam

期望的输出:

林 …

arrays mongodb

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

Sqoop:无法加载mysql驱动程序异常

我在本地机器上安装了Sqoop.以下是配置信息.

Bash.bashrc:

export HADOOP_HOME=/home/hduser/hadoop
export HBASE_HOME=/home/hduser/hbase
export HIVE_HOME=/home/hduser/hive
export HCAT_HOME=/home/hduser/hive/hcatalog
export SQOOP_HOME=/home/hduser/sqoop

export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$SQOOP_HOME/bin
export PATH=$PATH:$HCAT_HOME/bin
Run Code Online (Sandbox Code Playgroud)

Hadoop的:

Version: Hadoop 1.0.3
Run Code Online (Sandbox Code Playgroud)

蜂巢:

Version: hive 0.11.0 
Run Code Online (Sandbox Code Playgroud)

Mysql连接器驱动程序

version: mysql-connector-java-5.1.29

"The driver is copied to the lib folder of sqoop"
Run Code Online (Sandbox Code Playgroud)

Sqoop:

version: sqoop 1.4.4
Run Code Online (Sandbox Code Playgroud)

完成所有安装后,我在mysql中创建了一个名为practice_1的表,但是当我运行load命令将数据从mysql加载到hdfs时,该命令会抛出异常:

ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not     load db driver class: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

Coud有人请指导我可能出现的问题.

mysql hadoop hive sqoop

5
推荐指数
2
解决办法
3万
查看次数

在单个语句中处理区分大小写和不区分大小写的正则表达式模式

我有一个小的正则表达式要处理。我有两个不同的术语。

  1. “美国”,我想忽略大小写来匹配
  2. “US”,我想在不忽略大小写的情况下进行匹配。

我想在单个正则表达式替换语句中执行以下两个正则表达式替换。

clntxt = re.sub('(?i)United States', 'USA', "united states")
# Output: USA
clntxt = re.sub('US', 'USA', "US and us")
# output: USA and us
Run Code Online (Sandbox Code Playgroud)

我需要类似的东西

clntxt = re.sub('(?i)United States|(?s)US', 'USA', "united states and US and us")
# output: USA and USA and us
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现上述目标?

python regex

5
推荐指数
1
解决办法
4715
查看次数

标签 统计

hadoop ×4

python ×4

hdfs ×2

hive ×2

mongodb ×2

arrays ×1

gensim ×1

hadoop2 ×1

high-availability ×1

mysql ×1

nosql ×1

numpy ×1

pandas ×1

regex ×1

sqoop ×1