重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
但是由于“大数据”和“Hadoop”这两个热门词,即使很多人实际上不需要Hadoop,他们也愿意穿上“紧身衣”。
创新互联公司专业为企业提供纳溪网站建设、纳溪做网站、纳溪网站设计、纳溪网站制作等企业网站建设、网页设计与制作、纳溪企业网站模板建站服务,十载纳溪做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
一、如果我的数据量是几百兆,Excel可能没法加载它
对于Excel软件来说的“很大的数据”并非大数据,其实还有其它极好的工具可以使用——我喜欢的Pandas。Pandas构建于Numpy库 之上,可以以矢量格式的方式有效地把数百兆的数据载入到内存中。在我购买已3年的笔记本上,它可以用Numpy在一眨眼的功夫把1亿的浮点数乘在一起。 Matlab和R也是极好的工具。
对于几百兆的数据量,典型的做法是写一个简单的Python脚本按行读取文件行,并处理它,向另一个文件写入。
二、如果我的数据是10GB呢
我买了个新笔记本,它有16GB的内存和256GB的SSD。如果你要载入一个10GB的CSV文件到Pandas,它占用的内存实际上是很小的 ——其结果是以数字类型的字符串保存的,如“17284832583”作为4字节货8字节的整数,或存储“284572452.2435723”字符串作 为8字节的双精度浮点数。
最坏的情况是你或许不能把所有的数据都同时载入到内存中。
三、如果我的数据是100GB、500GB或1TB呢
买个2TB或4TB的硬盘,在桌面PC或服务器上安装一个Postgre来解决它。
四、Hadoop远远比不上SQL或Python脚本
在计算的表达方面,Hadoop弱于SQL,也弱于Python脚本。
SQL是一个很直接的查询语言,适合做业务分析,SQL的查询相当简单,而且还非常快——如果你的数据库使用了正确的索引,二级查询或多级查询另当别论。
Hadoop没有索引的概念,Hadoop只有全表扫描,Hadoop有高度泄露抽象——我花了很多时间来处理Java的内存错误、文件碎片以及集群竞争,这些时间远大于我花在数据分析上的时间。
如果你的数据并不是像SQL表那样的结构化数据(比如纯文本、JSON对象、二进制对象),通常是直接写一个小的Python脚本来按行处理你的数据。把数据存储于文件,处理每一个文件,等等。如果换成是Hadoop就很麻烦。
相比于SQL或Python脚本,Hadoop要慢的多。正确的使用索引后,SQL查询总是非快——PostgreSQL简单的查找索引,检索确 切的键值。而Hadoop是全表扫描的,它会把整个表进行重新排序。通过把数据表分片到多台计算机上后,重排序是很快的。另一方面,处理二进制对 象,Hadoop需要重复往返于命名节点,目的是查找和处理数据。这适合用Python脚本来实现。
五、我的数据超过了5TB
你应该考虑使用Hadoop,而无需做过多的选择。
使用Hadoop唯一的好处是可伸缩性非常好。如果你有一个包含了数TB数据的表,Hadoop有一个适合全表扫描的选项。如果你没有这样大数据量的表,那么你应该像躲避瘟疫那样避免使用Hadoop。这样使用传统的方法来解决问题会更轻松。
六、Hadoop是一个极好的工具
我并不讨厌Hadoop,当我用其它工具不能很好处理数据时我会选择Hadoop。另外,我推荐使用Scalding,不要使用Hive或Pig。Scalding支持使用Scala语言来编写Hadoop任务链,隐藏了其下的MapReduce。
更改拥有者:
usage()
{
cat EOF
usage: $0 options
This script set ownership for all table, sequence and views for a given database
Credit: Based on by Alex Soto
Also merged changes from @sharoonthomas
OPTIONS:
-h Show this message
-d Database name
-o Owner
EOF
}
DB_NAME=
NEW_OWNER=
PGSQL_USER=postgres
while getopts "hd:o:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
d)
DB_NAME=$OPTARG
;;
o)
NEW_OWNER=$OPTARG
;;
esac
done
if [[ -z $DB_NAME ]] || [[ -z $NEW_OWNER ]]
then
usage
exit 1
fi
for tbl in `psql -U $PGSQL_USER -qAt -c "select tablename from pg_tables where schemaname = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select table_name from information_schema.views where table_schema = 'public';" ${DB_NAME}` ;
do
psql -U $PGSQL_USER -c "alter table \"$tbl\" owner to ${NEW_OWNER}" ${DB_NAME} ;
done
真的很好!我们公司在用它!
首先它是面向对象的关系数据库,表继承解决了我们产品分类库的问题,这个在主流数据库中很难见得。其次,9.1版开始windows下的Postgresql搭配Server效率提高了不少啊!且函数、触发器的plpgsql语言非常好,况且还远远不是唯一的选择。再次,它的PostGIS模块是海量开源GIS数据的默认引擎,支持许多有用的计算,以及空间索引,经过我亲自测试,100GB的 Planet.OSM全球数据跑的很稳定。
最后,他的安装、卸载要比Oracle等简单的多,windows xp home上都跑的飞快(需要对表空间的权限用额外的工具修改)。
安装注意:
如果是Linux没有什么要注意的,直接 apt 或者yum即可。
中文windows下, 安装时的Locale 要选择"C",而不是默认(Zh-cn),否则可能安装失败。
创建表空间时,要手工在资源管理器里创建文件夹,而后把资源管理器的“工具”--》文件夹选项里的“查看”--使用简单文件夹共享 勾掉(不选),而后右键单击新建的文件夹,打开属性,在"安全"页面添加用户postgres为全权限访问,否则表空间创建失败。
应该比mysql好学,文档做得比较好.有中文文档,自己去搜一下.csdn上面就有.自己可视化工具.例子也比较简单易懂.不用ms sql server的话,这个应该算是最好学的了.而且功能也很强大的.号称最强的开源数据库.