近期文章

Python 2018-01-01

使用python和opencv实现简单的网络摄像头

这个网络摄像头需要一个客户端和服务端,客户端使用opencv捕捉摄像头,通过socket将图片流传输到服务端,服务端接受图片流,使用HTTPServer渲染生成一个简单的网页,将图片流用mjpeg的方式传输到浏览器中,这样就可以直接用浏览器来查看摄像头视频了。主要的实现方式就是这样的,下面详细介绍下.

安装依赖

首先需要在客户端安装opencv,安装方式可以Google下,这里就不再赘述了,服务端需要安装pillownumpy这两个模块。

实现代码

首先是客户端的代码:

import io
import socket
import struct
import time
import datetime
import cv2

client_socket = socket.socket()
client_socket.connect(('服务端ip地址或域名', 8002))

connection = client_socket.makefile('wb')
try:
    #打开摄像头
    cap = cv2.VideoCapture(0)
    while (1):
        #读取图片
        ret, frame = cap.read()
        # cv2.imshow("capture", frame)
        if cv2....
CSharp 2017-12-23

dotnet命令整理

基本格式:

dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--roll-forward-on-no-candidate-fx] [-v|--verbose] [--version]

选项说明:
--additionaldeps <PATH>
其他路径deps.json文件。
--additionalprobingpath <PATH>
包含要进行探测的探测策略和程序集的路径。
-d|--diagnostics
启用诊断输出。
--fx-version <VERSION>
运行应用程序所使用的已安装 .NET Core 运行时的版本。 -h|--help
打印出有关命令的简短帮助。 如果使用 dotnet,还会打印可用命令的列表。
--info
打印出有关 CLI 工具和环境的详细信息,例如当前操作系统、提交该版本的 SHA 和其他信息。
--roll-forward-on-no-candidate-fx
在没有候选共享框架的情况下前滚。
-v|--verbose
启用详细输出。
--version
打印使用中的 .NET Core SDK 版本。

常用命令:

...

Python 2017-11-05

使用python连接hive

首先需要安装包:

pip install pyhive[hive]

如果安装报错的话执行:

sudo apt-get install libsasl2-dev

再安装下。

然后需要启动hive服务:

hive --service hiveserver2

修改hive验证方式: 在hive-site.xml中:

<property>
   <name>hive.server2.authentication</name>
   <value>NOSASL</value>
   <description>
     Expects one of [nosasl, none, ldap, kerberos, pam, custom].
     Client authentication types.
       NONE: no authentication check
       LDAP: LDAP/AD based authentication
       KERBEROS: Kerberos/GSSAPI authentication
       CUSTOM: Custom authentication provider
               (Use with property hive.server2.custom.authentica...
猿来如此 2017-11-05

ubuntu安装Hadoop Hive

ubuntu安装Hadoop Hive

Hive是基于Hadoop的一个数据仓库工具。Hive可直接用类似SQL的语言描述数据处理逻辑,避免开发人员在开发大数据查询分析处理程序时,编写复杂的基于JAVA的MapReduce程序。换句话说,Hive是将MapReduce抽象为类似SQL语句,在执行SQL语句时,Hive将其转换为MapReduce任务并运行。

很明显Hive需要依赖Hadoop,而且,不同于HBase,Hive必须依赖于HDFS,不能使用本地文件系统;Hive基于Hadoop的分布式存储系统HDFS和HBase以及MapReduce并行计算框架工作。

下载和初始化Hive

下载Hive并解压:

使用如下命令:

wget http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz
tar xzf apache-hive-2.1.1-bin.tar.gz
sudo cp -r apache-hive-2.1.1-bin /usr/local/hive
sudo chown -R hadoop /usr/local/hive
sudo chmod -R 755 /usr/local/hive

添加环境变量:

export HIVE_HOME=/usr/local/hive
e...
Python 2017-11-04

使用Hadoop的MapReduce和jieba分词统计西游记中的词频

这个功能主要是使用python的jieba分词模块来分词,然后使用mapreduce来统计,其实功能很简单,但是由于刚开始接触使用hadoop,出现了各种问题,这里记录下。
在hadoop执行的mapreduce程序时,使用python非系统模块的话会出现找不到包的错误,网上找到了一种解决方案,使用系统内置的zipimport模块,使用方法: 首先将该模块的所有文件复制到当前目录,然后执行:

zip -r jieba.zip jieba
mv jieba.zip jieba.mod

然后代码中就可以这样引入:

import sys

sys.path.append('./')
import zipimport

importer = zipimport.zipimporter('jieba.mod')
jieba = importer.load_module('jieba')
import jieba.analyse

执行的时候又提示错误.在import jieba.analyse时候报错找不到idf.txt这个文件,看了下jieba的源码才发现,在tfidf.py文件如下代码块:

_get_module_path = lambda path: os.path.normpath(os.path.join(os.getcwd(),
                   ...
Python 2017-11-04

使用 Python 编写 Hadoop MapReduce 程序

Hadoop 框架使用 Java 开发的,对 Java 进行了原生的支持,不过对于其它语言也提供了 API 支持,如 Python 、 C++ 、 Perl 、 Ruby 等。这个工具就是 Hadoop Streaming ,顾名思义, Streaming 就是 Pipe 操作,说起 pipe ,大家肯定不陌生。最原生的 Python 支持是需要 Jython 支持的,不过这里有额外的方法来实现,大家如果只是使用的话,不用纠结 Jython 转换的问题。

最容易的 Hadoop 编程模型就是 Mapper 和 Reducer 的编写,这种编程模型大大降低了我们对于并发、同步、容错、一致性的要求,你只要编写好自己的业务逻辑,就可以提交任务。然后喝杯茶,结果就出来了,前提是你的业务逻辑没有错误。

使用 Hadoop Streaming ,能够利用 Pipe 模型,而使用 Python 的巧妙之处在于处理输入输出的数据使用的是 STDIN 和 STDOUT ,然后 Hadoop Streaming 会接管一切,转化成 MapReduce 模型。

我们还是使用 wordcount 例子,具体内容不再详细解释,如果有不理解的可以自行度之。下面我们先看下 mapper 的代码:

#!/usr/bin/env python  

import sys  
#input comes ...
发现更多