最新手机号段获取工具

最新的手机号码验证正则

mobile:"^13[0-9]{9}|15[012356789][0-9]{8}|18[0-9]{9}|14[579][0-9]{8}|17[0-9]{9}$",

查询代码:

(131 to 199).map{ k =>

    var mobile = k + "01058520"
    var url = "http://v.showji.com/Locating/showji.com20150108.aspx?m="+ mobile +"&output=json"
    try {
      var source = scala.io.Source.fromURL(url).mkString
      var result = source.split("\"Corp\":\"")(1).split("\"")(0)

      if(result.length){
        println(k +":"+ result)
      }

      Thread sleep 3000
    } catch {
      case e: Exception => {println ("something error")}
    }
}

result:
131:中国联通
132:中国联通
133:中国电信
134:中国移动
135:中国移动
136:中国移动
137:中国移动
138:中国移动
139:中国移动
140:
141:
142:
143:
144:
145:中国联通
146:
147:中国移动
148:
149:中国电信
150:中国移动
151:中国移动
152:中国移动
153:中国电信
154:
155:中国联通
156:中国联通
157:中国移动
158:中国移动
159:中国移动
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:中国电信
171:
172:
173:
174:
175:
176:中国联通
177:中国电信
178:中国移动
179:
180:中国电信
181:中国电信
182:中国移动
183:中国移动
184:中国移动
185:中国联通
186:中国联通
187:中国移动
188:中国移动
189:中国电信
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:

Ucloud UDDP(Hadoop + hive)测试小记

数据结构:150-200字节/行,平均160

+-----------------------+-----------------------+-----------------------+
|       col_name        |       data_type       |        comment        |
+-----------------------+-----------------------+-----------------------+
| ip                    | string                | None                  |
| time                  | int                   | None                  |
| day                   | int                   | None                  |
| act                   | string                | None                  |
| channel               | string                | None                  |
| vcode                 | int                   | None                  |
| imei                  | string                | None                  |
| mc                    | string                | None                  |
| md5                   | string                | None                  |
| android_id            | string                | None                  |
| model                 | string                | None                  |
| refer                 | string                | None                  |
| push                  | int                   | None                  |
+-----------------------+-----------------------+-----------------------+

文件清单:

+----------------------------------------+
|               DFS Output               |
+----------------------------------------+
| 15147471000   /umr-mpnp2o/log          |
| 45442413000   /umr-mpnp2o/log02        |
| 454424130000  /umr-mpnp2o/log03        |
| 0             /umr-mpnp2o/uhivebh5eoz  |
+----------------------------------------+

Uhost to UDDP 文件写入速度:

+-----------------------+-----------------------+-----------------------+
|  100000000 rows       |    300000000 rows     |    3000000000 rows    |
+-----------------------+-----------------------+-----------------------+
| 14G                   | 42G                   | 423G                  |
| put time 6m32.212s    | put time 18m42.742s   | put time 187m11.383s  |
| count time 32.501s    | count time 46.815s    | count time 204.257s   |
+-----------------------+-----------------------+-----------------------+

scala sbt 添加国内镜像

sbt运行时经常需要下载大量的jar包,默认连接到maven官网,速度通常比较慢。
在`~/.sbt/`下添加一个`repositories`文件,里面内容如下:

[repositories]
local
osc: http://maven.oschina.net/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

Scala collection library的groupBy方法

groupBy方法定义

def groupBy [K] (f: (A) ⇒ K): Map[K, Traversable[A]]

demo 1

val birds = List("Golden Eagle", "Gyrfalcon", "American Robin",
"Mountain BlueBird", "Mountain-Hawk Eagle")
val groupedByFirstLetter = birds.groupBy(_.charAt(0))

结果
Map(
M -> List(Mountain BlueBird, Mountain-Hawk Eagle),
G -> List(Golden Eagle, Gyrfalcon),
A -> List(American Robin)
)

demo2

val cats = List("Tiger", "Lion", "Puma", "Leopard", "Jaguar", "Cheetah", "Bobcat")
val groupedByLength = cats.groupBy(_.length)

结果
Map(
5 -> List(Tiger),
7 -> List(Leopard, Cheetah),
4 -> List(Lion, Puma),
6 -> List(Jaguar, Bobcat)
)

demo 3

val raptors = List("Golden Eagle", "Bald Eagle", "Prairie Falcon", "Peregrine Falcon", "Harpy Eagle", "Red Kite")
val kinds = raptors.groupBy {
   case bird if bird.contains("Eagle") => "eagle"
   case bird if bird.contains("Falcon") => "falcon"
   case _ => "unknown"
}

结果
Map(
unknown -> List(Red Kite),
eagle -> List(Golden Eagle, Bald Eagle, Harpy Eagle),
falcon -> List(Prairie Falcon, Peregrine Falcon)
)

demo 4

val words = List("one", "two", "one", "three", "four", "two", "one")
val counts = words.groupBy(w => w).mapValues(_.size)

结果
Map(one -> 3, two -> 2, four -> 1, three -> 1)

demo 5

val numbers = List(1,4,5,1,6,5,2,8,1,9,2,1)
numbers.groupBy(x=>x).map {x=> (x._1, x._2.length) }

结果和demo 4一样
Map[Int,Int] = Map(5 -> 2, 1 -> 4, 6 -> 1, 9 -> 1, 2 -> 2, 8 -> 1, 4 -> 1)

大数据关键词

  • Hadoop
  • Hbase
  • Hive
  • Pig
  • MapReduce
  • YARN(MapReduce 2.0)
  • ZooKeeper
  • MapReduce
  • Spark(Scala)
  • Storm
  • Cloudera Impala
  • Shark(Hive on Spark)
  • Presto
  • Druid(秒+十亿行级)
  • Kylin(eBay,TPB+百亿数据+ANSI SQL+秒级+ODBC)
  • Cubert(Linkedin)

Hadoop生态圈由以下内容组成:

  • HDFS—— Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS)。HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS为HBase等工具提供了基础。
  • MapReduce——Hadoop的主要执行框架是MapReduce,它是一个分布式、并行处理的编程模 型。MapReduce把任务分为map(映射)阶段和reduce(化简)。开发人员使用存储在HDFS中数据(可实现快速存储),编写Hadoop的 MapReduce任务。由于MapReduce工作原理的特性, Hadoop能以并行的方式访问数据,从而实现快速访问数据。
  • Hbase——HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase使用Zookeeper进行管理,确保所有组件都正常运行。
  • Zookeeper ——用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
  • Oozie——Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
  • Pig——它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin翻译成MapReduce程序序列。
  • Hive ——Hive类似于SQL高级语言,用于运行存储在 Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的 MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。

Hadoop的生态圈还包括以下几个框架,用来与其它企业融合:

  • Sqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。
  • Flume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。它基于一个简单而灵活的架构,并提供了数据流的流。它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop。

除了在图1-1所示的核心部件外,Hadoop生态圈正在不断增长,以提供更新功能和组件,如以下内容:

  • Whirr——Whirr是一组用来运行云服务的Java类库,使用户能够轻松地将Hadoop集群运行于Amazon EC2、Rackspace等虚拟云计算平台。
  • Mahout——Mahout是一个机器学习和数据挖掘库,它提供的MapReduce包含很多实现,包括聚类算法、回归测试、统计建模。通过使用 Apache Hadoop 库,可以将Mahout有效地扩展到云中。
  • BigTop —— BigTop作为Hadoop子项目和相关组件,是一个用于打包和互用性测试的程序和框架。
  • Ambari——Ambar通过为配置、管理和监控Hadoop集群提供支持,简化了Hadoop的管理。

 

Hadoop发行版供应商

供应商 HADOOP特性
Cloudera CDH,个人版和企业版 CDH基于Hadoop2,(撰写本文时为4.1.2版本)包括 HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其他开源工具(包括实时查询引擎Impala)。Cloudera的个人免费版包括所有CDH工具,和支持高达50个节点的集群管理器。 Cloudera企业版提供了更复杂的管理器,支持无限数量的集群节点,能够主动监控,并额外提供了数据分析工具。
Hortonworks数据平台 发行版(Alpha 2.0版)基于Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,实时版Hive(Stinger)和其他开源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驱动和针对大数据的Talend Open Studio。
MapR 基于Hadoop1,发行版(撰写本文时为版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他开源工具。它还包括直接NFS访问、快照、“高实用性”镜像、专有的HBase实现,与Apache完全兼容的API和一个MapR管理控 制台。
IBM InfoSphere BigInsights 基于Hadoop1,提供了两个版本。基本版包括HDFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他一些开源工具。并提供IBM的安装程序和数据访问工具的基本版本。企业版增加了复杂的作业管理工具、集成了数据源的数据访问层和 BigSheets(类似电子表格的界面,用来操作集群中的数据)。
GreenPlum的Pivotal HD 在撰写本文时,最新版基于Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其他开源工具。Pivotal HD企业级还增加了先进的HAWQ数据库服务(ADS),和丰富、成熟、并行的SQL处理工具。
亚马逊弹性MapReduce(EMR) 在撰写本文时,最新版基于Hadoop1。亚马逊EMR是一个web服务,能够使用户方便且经济高效地处理海量的数 据。它采用Hadoop框架,运行在亚马逊弹性计算云EC2和简单存储服务S3之上。包括HDFS(S3支持),HBase(专有的备份恢 复),MapReduce,, Hive (Dynamo的补充支持), Pig, and Zookeeper.
Windows Azure的HDlnsight HDlnsight基于Hortonworks数据平台(Hadoop1),运行在Azure云。它集成了微软管理 控制台,易于部署,易于System Center的集成。通过使用Excel插件,可以整合Excel数据。通过Hive开放式数据库连接(ODBC)驱动程序,可以集成Microsoft SQL Server分析服务(SSAS)、PowerPivot和Power View。Azure Marketplace授权客户连接数据、智能挖掘算法以及防火墙之外的人。Windows Azure Marketplace从受信任的第三方供应商中,提供了数百个数据集。

目前,我们采用了Cloudera提供的CDH套件,简单方便。
目前得知,Cloudera对比了Spark与Hadoop,取代MapReduce,宣布该公司将加大Spark的投入。实际上,Cloudera已经开始了向Spark的迁移,其中包括了所有Hive SQL-on-Hadoop的部分。同时,Cloudera称并不会使用Spark替换Impala,他们坚信Impala将是交互式SQL on Hadoop查询的未来,处理Hive的速度远超现有的所有软件。

MapReduce即将成为历史。

在Cloudera Hue中,添加Oracle数据查询

整个流程分几部分

安装Oracle

  1. 下载Oracle
  2. 安装Oracle
  3. 设置自启动服务
  4. 启动服务

Hue中连接Oracle

  1. 在Hue中添加服务
  2. 重启服务

下载Oracle
http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
登陆oracle下载oracle-xe-11.2.0-1.0.x86_64.rpm.zip

#解压安装包
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip

#安装
cd Disk1 && rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

#配置数据库,根据需要设置端口、用户名和密码
/etc/init.d/oracle-xe configure

#启动服务
service oracle-xe start
#/etc/init.d/oracle-xe start

#停止服务,手工停止命令
service oracle-xe stop
#/etc/init.d/oracle-xe stop

#设置自启动
sudo chkconfig oracle-xe on

#添加环境变量
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
echo "source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh" >> ~/.bash_profile

#连接数据库,默认用户名为system
sqlplus

数据库查询测试

[cloudera@quickstart ~]$ sqlplus 

SQL*Plus: Release 11.2.0.2.0 Production on Fri Oct 17 20:49:01 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: system
Enter password: 

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> show user;
USER is "SYSTEM"
SQL> select * from all_users;

USERNAME			  USER_ID CREATED
------------------------------ ---------- ------------------
XS$NULL 		       2147483638 28-AUG-11
APEX_040000			       47 28-AUG-11
APEX_PUBLIC_USER		       45 28-AUG-11
FLOWS_FILES			       44 28-AUG-11
HR				       43 28-AUG-11
MDSYS				       42 28-AUG-11
ANONYMOUS			       35 28-AUG-11
XDB				       34 28-AUG-11
CTXSYS				       32 28-AUG-11
OUTLN					9 28-AUG-11
SYSTEM					5 28-AUG-11

USERNAME			  USER_ID CREATED
------------------------------ ---------- ------------------
SYS					0 28-AUG-11

12 rows selected.

SQL> 

详细流程参见:http://mutap.wordpress.com/2012/04/22/install-oracle-11g-xe-release-2-in-oracle-linux-6/

在Hue中添加Oracle的rdbms连接,配置文件如下
添加以下配置文件

  [[databases]]
    [[mysql]]
    nice_name="shuhai's mac"
    name=
    engine=mysql
    host=10.0.2.2
    port=3306
    user=root
    password=password

    [[oracle]]
    nice_name="cloudera's oracle"
    name=
    engine=oracle
    host=127.0.0.1
    port=1521
    user=system
    password=password
sudo vim /etc/hue/conf.empty/hue.ini
sudo service hue restart

如果出现系统错误,如`Error loading cx_Oracle module: No module named cx_Oracle`,需要使用`pip install cx_Oracle`

解决Impala中创建表以后,查询时却提示表不存在的问题

查询时提示表不存在,而尝试创建表却提示表存在。使用HDFS中的文件导入为表也出现同样的问题,在Hue界面刷新Impala中的表可以看到表,但查询时依然提示表不存在。

[example.com:21000] > select * from tab1;
Query: select * from tab1
ERROR: AnalysisException: Table does not exist: default.tab1
[example.com:21000] > CREATE EXTERNAL TABLE tab1
                    > (
                    >    id INT,
                    >    col_1 BOOLEAN,
                    >    col_2 DOUBLE,
                    >    col_3 TIMESTAMP
                    > )
                    > ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
                    > LOCATION '/user/dwheeler/sample_data/tab1';
Query: create EXTERNAL TABLE tab1
(
id INT,
col_1 BOOLEAN,
col_2 DOUBLE,
col_3 TIMESTAMP
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/theory/sample_data/tab1'
ERROR: AlreadyExistsException: Table tab1 already exists

原因如下:
In Impala 1.1 and earlier you need to issue an explicit "invalidate metadata" command to make tables created on other nodes visible to the local Impala daemon.
Starting with Impala 1.2 this won't be necessary; the new catalog service will take care of metadata distribution to all impalad's in the cluster.

解决办法如下,在Impala中执行一下同步任务:

invalidate metadata

via:http://stackoverflow.com/questions/19647467/why-dont-impala-table-definitions-replicate

HIVE中使用python实现UDAF

HIVE,FACEBOOK的一个开源项目,利用类SQL的语句(HiveQL)来加快一般的MapReduce的开发过程。

UDF,user defined function, 因为HIVE毕竟不是一般的关系型数据库,支持的HQL有限,如果要实现复杂的功能,就要通过自己定义函数来帮助实现。

HIVE应该利用PIPE的原理,将自己查询的结果放到python脚本的stdin中。所以他的查询结果不会显示在terminal中,terminal中显示的结果是python的执行结果。

使用HIVE的命令进入数据仓库(mydbname是你的数据库)

use mydbname;

使用HIVE的命令查看已经建立的表

show tables;

使用HIVE的命令查看(mytable)表中的字段

desc mytable;

使用HIVE命令用PYTHON实现UDF。

通过transform语句,可以将hive语句中select得到的数据通过类似hadoop中streaming的方式,传给using语句中的脚本作为输入。用DISTRIBUTE BY将mapper的输出分类给reducer.

add file /pathof/udf.py;
SELECT 
TRANSFORM(keyword)
USING 'python /pathof/udf.py'
AS(keyword)
FROM xxx
WHERE dt='2013-09-25'
;

要注意的是,这里的TRANSFORM的内容可以写*,但是AS()里就不能写*,会报错。

输入到python中的内容,是按照AS里的数量来决定的。

下面是python的脚本,内容很简单,就是把输入的东西原封不动输出来。

/pathof/udf.py

import sys
for line in sys.stdin:
    line = line.strip()
    print line

hive error resoled "DEPRECATED: hive.metastore.ds.retry.* no longer has any effect. Use hive.hmshandler.retry.* instead"

I have installed hadoop(2.4.1)single node cluster and have tried to install hive(0.13.0)over it.
system base on Mac OS 10.9.4 width brew.
The problem is that everytime i start hive, I am getting this error bellow:

hive -hiveconf hive.root.logger=WARN,console
14/08/25 16:07:49 WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead
14/08/25 16:07:50 [main]: WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead

Logging initialized using configuration in jar:file:/usr/local/Cellar/hive/0.13.1/libexec/lib/hive-common-0.13.1.jar!/hive-log4j.properties
14/08/25 16:07:50 [main]: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/08/25 16:07:52 [main]: WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead
hive> %

The error fixed by edit the hive-site.xml
replace hive.metastore.ds.retry width /hive.hmshandler.retry

vim /usr/local/Cellar/hive/0.13.1/libexec/conf/hive-site.xml
:%s/hive.metastore.ds.retry/hive.hmshandler.retry/g
:wq

Installing Hive on OSX Lion (10.9) with Brew

Hadoop 2.5.0已经发布了,今天来体验一把Hadoop+Hive。

macos 10.9 brew 安装,没有安装brew则使用以下命令安装。

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)

如果之前有安装hadoop,可以使用brew upgrade来升级之前安装的版本。

brew upgrade

接下来按正常流程安装Hadoop和hive

brew install hadoop
brew install hive

hive安装完以后,会提示一些环境变量信息,根据实际情况,将环境变量添加到 ~/.bash_profile

export JAVA_HOME="$(/usr/libexec/java_home)"
export HADOOP_HOME=/usr/local/Cellar/hadoop/2.4.1
export HIVE_HOME=/usr/local/Cellar/hive/0.13.1/libexec
export HCAT_HOME=/usr/local/Cellar/hive/0.13.1/libexec/hcatalog
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

source ~/.bash_profile

接下来配置hive相关信息,如metastore数据库连接方式等,详细流程可以参考:http://running.iteye.com/blog/908038

$mysql -uroot -p
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES on  metastore.* TO 'hiveuser'@'localhost';;
mysql> flush privileges;

mysql权限给了所有权限,否则会出现莫名的问题。

然后告诉hive使用jdbc来连接mysql,同时需要下载mysql连接驱动。

curl -L 'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz/from/http://mysql.he.net/' | tar xz
cp mysql-connector-java-5.1.15/mysql-connector-java-5.1.32-bin.jar /usr/local/Cellar/hive/*/libexec/lib/

如果驱动版本有更新,可以到下面的官网下载,修改上面的版本号
http://dev.mysql.com/downloads/connector/j/

接下来修改hive的配置文件

cd /usr/local/Cellar/hive/*/libexec/conf
cp hive-default.xml.template hive-site.xml

修改数据库存连接方式和数据库账号

vim hive-site.xml

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>false</value>
</property>

修改mac下的连接环境变量,添加一行配置信息

cp hive-env.sh.template hadoop-env.sh
vim hadoop-env.sh
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

最后就可以测试Hive了。

$ hive;
hive > show tables;
hive> create table temp_table temp_col string;

安装过程很快,中间遇到几个环境变量、数据库账号不正确的问题,google一把都解决了。