小编bbe*_*ort的帖子

为什么没有'hadoop fs -head'hell命令?

在HDFS上检查文件的快速方法是使用tail:

~$ hadoop fs -tail /path/to/file
Run Code Online (Sandbox Code Playgroud)

这将显示文件中的最后一千字节数据,这非常有用.但是,相反的命令head似乎不是shell命令集合的一部分.我发现这非常令人惊讶.

我的假设是,由于HDFS是为非常大的文件上的非常快速的流读取而构建的,因此存在一些影响访问的问题head.这让我对做头脑的事情犹豫不决.有人有答案吗?

hadoop hdfs

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

点击事件按钮是否正在发送图标作为目标?

我有一个非常类似的问题:"Jquery'点击'当图标在按钮上时没有触发"但是该帖子的分辨率并没有为我提供解决方案,所以我认为可能会发生一些不同的事情.

关键问题是我有一个带有图标的按钮.当我点击按钮(例如文本)时,事件目标是按钮元素; 但是当我点击图标时,事件目标就是图标对象.不幸的是,这非常烦人,因为我将数据值存储在我想要访问的按钮上.

这是HTML:

<button class="btn btn-success vote-button" id="btnUpVote" type="button" data-vote="1">
    <i class="fa fa-thumbs-up"></i>
    Up Vote!
</button>

<button class="btn btn-danger vote-button" id="btnDownVote" type="button" data-vote="-1">
    <i class="fa fa-thumbs-down"></i>
    Down Vote!
</button>
Run Code Online (Sandbox Code Playgroud)

这是Javascript:

function sendVote(event) {
    var $btn = $(event.target);
    console.log(parseInt($btn.data('vote'));
    console.log($btn.prop('tagName'));
}

$('body').on('click', 'button.vote-button', sendVote);
Run Code Online (Sandbox Code Playgroud)

单击文本("Up Vote!"或"Down Vote!")会产生以下控制台输出:

1
BUTTON
-1 
BUTTON
Run Code Online (Sandbox Code Playgroud)

单击图标(等)将导致以下控制台输出:

NaN
I
NaN
I
Run Code Online (Sandbox Code Playgroud)

即使我已经使用选择器"button.vote-button"在元素上注册了句柄.有谁知道为什么会这样?我不想必须为图标提供数据属性.

javascript jquery font-awesome twitter-bootstrap-3

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

如何使用Cal-Heatmap创建连续的类Github日历?

我刚刚开始使用cal-heatmap创建一个类似Github的日历(例如,一年中每一天的热图以块为单位).理想情况下,我希望它看起来像这样:

目标热图

不幸的是,通过我的设置,我不断得到更多的东西:

目前的丑闻

当前问题是几个月之间的空白,例如,中间存在白色块.我认为这个问题将是与the domain,the subdomain,and,and the rangeand rowLimit; 但我不能100%确定应该是什么组合.我试过几个 - 这是我目前的设置:

    (function($) {
        $(document).ready(function() {

            var cal = new CalHeatMap();
            cal.init({
                start: new Date(2013, 0), // January 1, 2013
                maxDate: new Date(),
                range: 12,
                rowLimit: 7,
                domain: "month",
                subDomain: "day",
                data: "/api/users/1/annotations/",
                cellSize: 12
            });

        });
    })(jQuery);
Run Code Online (Sandbox Code Playgroud)

我很确定这是可能的; 我想问题是,是否可以使用月/年域,以及我需要使用哪些设置来实现它.

编辑2014年1月27日:根据@kamisama的说法,我已经尽可能接近了.这是我目前的设置:

    cal.init({
        start: oneYearAgo(),
        maxDate: new Date(),
        range: 1,
        rowLimit: 7,
        domain: "year",
        subDomain: "day",
        data: "/api/users/1/annotations/",
        cellSize: 10.5
    });
Run Code Online (Sandbox Code Playgroud)

哪个可以得到这样的东西:

不是很好,但我觉得还不错

没有月份标签,也没有星期几的标签.

javascript jquery calendar heatmap d3.js

15
推荐指数
2
解决办法
4999
查看次数

如何修补一个对象,以便除了一个方法之外的所有方法都被模拟?

我有一个入口点函数main在一个对象上调用它,我想保持未被模拟,因为它在对象上调用了几个其他方法:

class Thing(object):

    def main(self):
        self.alpha()
        self.bravo()

    def alpha(self):
        self.charlie()

    def bravo(self):
        raise TypeError("Requires Internet connection!")

    def charlie(self):
        raise Exception("Bad stuff happens here!")
Run Code Online (Sandbox Code Playgroud)

这很简单,可以手动模拟:

thing = Thing() 
thing.alpha = MagicMock()
thing.bravo = MagicMock()
Run Code Online (Sandbox Code Playgroud)

我可以测试以确保alpha和bravo都被调用一次,我可以在alpha和bravo中设置副作用以确保它们被处理等等.

我担心的是,如果代码定义发生变化并且有人添加了一个charlie调用main.它没有被嘲笑,所以现在会感觉到副作用(而且它们就像写入文件,连接到数据库,从Internet上获取东西,因此这个简单的异常不会提醒我现在的测试坏).

我的计划是验证我的模拟对象不会调用其他方法而不是我应该说的方法(或者引发测试异常).但是,如果我做这样的事情:

MockThing = create_autospec(Thing)
thing = Thing()
thing.main() 

print thing.method_calls
# [calls.main()] 
Run Code Online (Sandbox Code Playgroud)

然后main也被嘲笑,所以它没有其他方法.我怎么能模仿每个方法但主要的方法呢?(我想要method_calls [calls.alpha(), calls.bravo()]).

编辑:用于黑客答案

好吧,我有一个非常hacky解决方案,但我希望有一个比这更好的答案.基本上我从原始类重新绑定方法(Python绑定一个未绑定的方法)

MockThing = create_autospec(Thing)
thing = MockThing()
thing.main = Thing.ingest.__get__(thing, Thing)
thing.main()

print thing.method_calls
# [calls.alpha(), …
Run Code Online (Sandbox Code Playgroud)

python python-mock python-unittest

14
推荐指数
3
解决办法
2080
查看次数

如何使用Python多处理和memory_profiler分析多个子进程?

我有一个使用Python multiprocessing模块生成多个工作人员的实用程序,我希望能够通过优秀的memory_profiler实用程序跟踪他们的内存使用情况,这可以完成我想要的一切 - 特别是随着时间的推移采样内存使用情况并绘制最终结果(I我不关心这个问题的逐行内存分析.

为了设置这个问题,我创建了一个更简单的脚本版本,它有一个worker函数,它分配的内存类似于库中给出的示例memory_profiler.工人如下:

import time

X6 = 10 ** 6
X7 = 10 ** 7

def worker(num, wait, amt=X6):
    """
    A function that allocates memory over time.
    """
    frame = []

    for idx in range(num):
        frame.extend([1] * amt)
        time.sleep(wait)

    del frame
Run Code Online (Sandbox Code Playgroud)

鉴于4名工人的顺序工作量如下:

if __name__ == '__main__':
    worker(5, 5, X6)
    worker(5, 2, X7)
    worker(5, 5, X6)
    worker(5, 2, X7)
Run Code Online (Sandbox Code Playgroud)

运行mprof可执行文件以配置我的脚本需要70秒,让每个工作程序一个接一个地运行.该脚本运行如下:

$ mprof run python myscript.py
Run Code Online (Sandbox Code Playgroud)

生成以下内存使用情况图:

顺序记忆生成工人

让这些工作程序同时进行,multiprocessing意味着脚本的完成速度与最慢的工作程序一样慢(25秒).该脚本如下:

import multiprocessing …
Run Code Online (Sandbox Code Playgroud)

python memory-profiling python-multiprocessing

14
推荐指数
1
解决办法
3399
查看次数

如何删除与 SQLAlchemy 的一对一关系

我想创建一个可为空的自引用关系,可以使用 SQLAlchemy 删除该关系。示例模型如下(注意,使用Flask-SQLAlchemy):

class Person(db.Model):

    __tablename__ = 'person'

    id          = db.Column(db.Integer, primary_key=True)
    partner_id  = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=True)
    partner     = db.relationship('Person', uselist=False)
Run Code Online (Sandbox Code Playgroud)

因此,可以将其想象为一桌只有一个搭档的警察,但该搭档可能原来一直是黑手党的成员,因此他们暂时失去了搭档。没有伴侣的警察很好,至少在数据库方面是这样——但我认为在整个演出过程中,他们没有伴侣的状态意味着大量的财产损失。

不用说,这个问题:sqlalchemy:带有声明性的一对一关系讨论了如何建立这种关系。问题是如何解除这种关系?通常,使用不同的外键,您可以按如下方式执行此操作:

joe.partner.remove(larry)
Run Code Online (Sandbox Code Playgroud)

其中joelarry都是Person对象。然而,经过uselist论证,joe.partner现在其实是一个Person没有remove办法的事情。

python sqlalchemy flask-sqlalchemy

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

将结构化数组转换为numpy数组以与Scikit-Learn一起使用

我将从使用CSV加载的结构化数组转换np.genfromtxt为a np.array以使数据适合Scikit-Learn估算器时遇到困难.问题是在某些时候会发生从结构化数组到常规数组的转换,从而导致a ValueError: can't cast from structure to non-structure.很长一段时间,我一直在用它.view来执行转换,但这导致NumPy发布了一些弃用警告.代码如下:

import numpy as np
from sklearn.ensemble import GradientBoostingClassifier

data = np.genfromtxt(path, dtype=float, delimiter=',', names=True)

target = "occupancy"
features = [
    "temperature", "relative_humidity", "light", "C02", "humidity"
]

# Doesn't work directly
X = data[features]
y = data[target].astype(int)

clf = GradientBoostingClassifier(random_state=42)
clf.fit(X, y)
Run Code Online (Sandbox Code Playgroud)

提出的例外是: ValueError: Can't cast from structure to non-structure, except if the structure only has a single field.

我的第二次尝试是使用如下视图:

# View is raising deprecation warnings …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

如何使用Python 3 json.dumps修复JSON密钥顺序?

我注意到Python 3的实现有一些奇怪的行为json.dumps,即每次将同一个对象从执行转储到执行时,键顺序都会改变.谷歌搜索没有工作,因为我不关心按键排序,我只是希望它们保持不变!这是一个示例脚本:

import json

data = {
    'number': 42,
    'name': 'John Doe',
    'email': 'john.doe@example.com',
    'balance': 235.03,
    'isadmin': False,
    'groceries': [
        'apples',
        'bananas',
        'pears',
    ],
    'nested': {
        'complex': True,
        'value': 2153.23412
    }
}

print(json.dumps(data, indent=2))
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,每次都会得到不同的输出,例如:

$ python print_data.py 
{
  "groceries": [
    "apples",
    "bananas",
    "pears"
  ],
  "isadmin": false,
  "nested": {
    "value": 2153.23412,
    "complex": true
  },
  "email": "john.doe@example.com",
  "number": 42,
  "name": "John Doe",
  "balance": 235.03
}
Run Code Online (Sandbox Code Playgroud)

但后来我再次运行它,我得到:

$ python print_data.py 
{
  "email": "john.doe@example.com",
  "balance": 235.03,
  "name": "John Doe",
  "nested": { …
Run Code Online (Sandbox Code Playgroud)

python json python-3.x

7
推荐指数
1
解决办法
1892
查看次数

使用 Go gRPC 为点对点连接指定截止日期。

根据 gRPC 文档,客户端可以指定截止日期,以确定客户端在出现DEADLINE_EXCEEDED错误退出之前将在服务器上等待多长时间。该文档提到不同的语言有不同的实现,并且某些语言没有默认值。

事实上,在Go gRPC 文档中快速 CTRL+F 显示“截止日期”没有任何结果。我确实发现WithTimeout了 TCP 连接的拨号器上的一个。

实现如下(来自helloworld 示例):

package main

import (
    "log"
    "os"
    "time"

    "golang.org/x/net/context"
    "google.golang.org/grpc"
    pb "google.golang.org/grpc/examples/helloworld/helloworld"
)

const (
    address     = "localhost:50051"
    defaultName = "world"
    deadline    = 20 
)

func main() {
    // Set up a connection to the server with a timeout 
    conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithTimeout(time.Duration(deadline)*time.Second)
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()
    c …
Run Code Online (Sandbox Code Playgroud)

tcp go grpc

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

当数据限制不同时,使用多个轴创建相等的方形(方形)图?

我想使用多个轴创建一个方形图,make_axes_locateablematplotlib文档中所示.然而,虽然这适用于x和y数据具有相同范围的图,但是当范围是不同的数量级时,它不起作用.

import numpy as np
import matplotlib.pyplot as plt

from mpl_toolkits.axes_grid1 import make_axes_locatable

x = np.random.normal(512, 112, 240)
y = np.random.normal(0.5, 0.1, 240)

_, ax = plt.subplots()
divider = make_axes_locatable(ax)

xhax = divider.append_axes("top", size=1, pad=0.1, sharex=ax)
yhax = divider.append_axes("right", size=1, pad=0.1, sharey=ax)

ax.scatter(x, y)
xhax.hist(x)
yhax.hist(y, orientation="horizontal")

x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
ax.set_aspect(abs(x1-x0)/abs(y1-y0))

plt.show()
Run Code Online (Sandbox Code Playgroud)

虽然此代码使用的set_aspect答案如我如何制作matplotlib散点图方块?轴未正确修改,如下所示:

在此输入图像描述

我尝试修复此问题:

ax.set_aspect(abs(x1-x0)/abs(y1-y0), share=True)
Run Code Online (Sandbox Code Playgroud)

但这导致了以下结果:

在此输入图像描述

在调用scatter之后和创建两个直方图轴之前设置方面似乎没有任何效果,即使它看起来是在文档示例中完成的.当数据范围相同时,此代码可以正常工作:

在此输入图像描述

更新:此问题的一个主要限制是使用make_axes_locateable而不是GridSpec在下面的评论中讨论.我正在处理的问题涉及创建绘图函数,接受Axes对象进行处理和修改,而不需要了解图中的图形或任何其他轴,如下面的代码所示:

import numpy as np
import …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
377
查看次数