往github中push本地库时,出现HTTP request failed错误

fish 回复了问题 3 人关注 2 个回复 2729 次浏览 2015-08-20 15:07 来自相关话题

Centos不能远程桌面了

fish 回复了问题 3 人关注 2 个回复 2137 次浏览 2015-08-20 10:56 来自相关话题

Spark sql registerAsTable无法注册表

songyh20 回复了问题 2 人关注 2 个回复 6126 次浏览 2015-08-19 16:09 来自相关话题

hive 给表load时出错

hello_world 回复了问题 3 人关注 3 个回复 4728 次浏览 2015-08-19 13:33 来自相关话题

一些git使用上的小问题

hello_world 回复了问题 2 人关注 1 个回复 1637 次浏览 2015-08-19 13:29 来自相关话题

一篇文章告诉你,该学R还是Python

木舟 发表了文章 0 个评论 1470 次浏览 2015-08-18 19:43 来自相关话题


1710.jpg




对于想从事数据行业的人和数据工作者来说,是学习R还是python,哪个工具更实用一直被大家争论。Martijn Theuwissen,DataCamp的教育专家详细比较了这两个工具。

ython和R是统计学中两种最流行的的编程语言,R的功能性主要是统计学家在开发时考虑的(R具有强大的可视化功能),而Python因为易于理解的语法被大家所接受。

在这篇文章中,我们将重点介绍R和Python以及它们在数据科学和统计上地位之间的差异。

关于R的介绍

Ross Ihaka和Robert Gentleman于1995年在S语言中创造了 开源语言R,目的是专注于提供更好和更人性化的方式做数据分析、统计和图形模型的语言。

起初R主要是在学术和研究使用,但近来企业界发现R也很不错。这使得中的R成为企业中使用的全球发展最快的统计语言之一。

R的主要优势是它有一个庞大的社区,通过邮件列表,用户贡献的文档和一个非常活跃的堆栈溢出组提供支持。还有CRAN镜像,一个用户可以很简单地创造的一个包含R包的知识库。这些包有R里面的函数和数据,各地的镜像都是R网站的备份文件,完全一样,用户可以可以选择离你最近的镜像访问最新的技术和功能,而无需从头开发。

如果你是一个有经验的程序员,你可以不会觉得使用R可以提高效率,但是,你可能会发现学习R经常会遇到瓶颈。幸运的是现在的资源很多。

关于Python的介绍

Python是由Guido van Rossem创建于1991年,并强调效率和代码的可读性。希望深入的数据分析或应用统计技术的程序员是Python的主要用户。

当你越需要在工程环境中工作,你会越喜欢Python。它是一种灵活的语言,在处理一些新东西上表现很好,并且注重可读性和简单性,它的学习曲线是比较低的。

和R类似,Python也有包,pypi是一个Python包的仓库,里面有很多别人写好的Python库。

Python也是一个大社区,但它是一个有点比较分散,因为它是一个通用的语言。然而,Python自称他们在数据科学中更占优势地位:预期的增长,更新颖的科学数据应用的起源在这里。

R和Python:数字的比较

在网上可以经常看到比较R和Python人气的数字,虽然这些数字往往就这两种语言是如何在计算机科学的整体生态系统不断发展,但是很难并列进行比较。主要的原因是,R仅在数据科学的环境中使用,而Python作为一种通用语言,被广泛应用于许多领域,如网络的发展。这往往导致排名结果偏向于Python,而且从业者工资会较低。

R如何使用?

R主要用于当数据分析任务需要独立的计算或分析单个服务器。这是探索性的工作,因为R有很多包和随时可用的测试,可以提供提供必要的工具,快速启动和运行的数量庞大几乎任何类型的数据分析。R甚至可以是一个大数据解决方案的一部分。

当开始使用R的时候,最好首先安装RStudio IDE。之后建议你看看下面的流行包:

•dplyr, plyr 和 data.table 可以轻松操作包
•stringr 操作字符串
•zoo做定期和不定期的时间序列工作
•ggvis, lattice, and ggplot2 进行数据可视化
•caret 机器学习

Python如何使用?

如果你的数据分析任务需要使用Web应用程序,或代码的统计数据需要被纳入生产数据库进行集成时你可以使用python,作为一个完全成熟的编程语言,它是实现算法一个伟大的工具。

虽然在过去python包对于数据分析还处于早期阶段,但是这些年已经有了显著改善。使用时需要安装NumPy/ SciPy的(科学计算)和pandas(数据处理),以使Python可用于数据分析。也看看matplotlib,使图形和scikit-learn机器学习。

不同于R,Python有没有明确的非常好的IDE。我们建议你看看Spyder以及IPython网站,看看哪一个最适合你。

R和Python:数据科学行业的表现

如果你看一下最近的民意调查,在数据分析的编程语言方面,R是明显的赢家。

有越来越多的人从研发转向Python。此外,有越来越多的公司使用这两种语言来进行组合。

如果你打算从事数据行业,你用好学会这两种语言。招聘趋势显示这两个技能的需求日益增加,而工资远高于平均水平。

R:优点和缺点

优点

可视化能力强

可视化通常让我们更有效地理解数字本身。R和可视化是绝配。一些必看的可视化软件包是ggplot2,ggvis,googleVis和rCharts。

完善的生态系统

R具有活跃的社区和一个丰富的生态系统。R包在CRAN,Bioconductor的和Github上。您可以通过Rdocumentation搜索所有的R包。

用于数据科学

R由统计学家开发,他们可以通过R代码和包交流想法和概念,你不一定需要有计算机背景。此外企业界也越来越接受R。

缺点

R比较缓慢

R使统计人员的更轻松,但你电脑的运行速度可能很慢。虽然R的体验是缓慢的,但是有多个包来提高的r性能:pqR,renjin,FastR, Riposte 等等。

R不容易深入学习

R学习起来并不容易,特别是如果你要从GUI来进行统计分析。如果你不熟悉它,即使发现包可能会非常耗时。

Python:优点和缺点

优点

IPython Notebook

IPython Notebook使我们更容易使用Python进行数据工作,你可以轻松地与同事共享Notebook,而无需他们安装任何东西。这大大减少了组织代码,输出和注释文件的开销。可以花更多的时间做实际的工作。

通用语言

Python是一种通用的语言,容易和直观。在学习上会比较容易,它可以加快你写一个程序的速度。此外,Python测试框架是一个内置的,这样可以保证你的代码是可重复使用和可靠的。

一个多用途的语言

Python把不同背景的人集合在一起。作为一种常见的、容易理解,大部分程序员都懂的,可以很容易地和统计学家沟通,你可以使用一个简单的工具就把你每一个工作伙伴都整合起来。

缺点

可视化

可视化是选择数据分析软件的一个重要的标准。虽然Python有一些不错的可视化库,如Seaborn,Bokeh和Pygal。但相比于R,呈现的结果并不总是那么顺眼。

Python是挑战者

Python对于R来说是一个挑战者,它不提供必不可少的R包。虽然它在追赶,但是还不够。

最终你该学习什么呢:

由你决定!作为一个数据工作者,你需要在工作中选择最适合需要的语言。在学习之前问清楚这些问题可以帮助你:

你想解决什么问题?
什么是学习语言的净成本?
是什么在你的领域中常用的工具?
什么是其他可用工具以及如何做这些涉及到的常用工具?

重要的事情说三遍

admin 发表了文章 0 个评论 1283 次浏览 2015-08-18 17:57 来自相关话题

常见问题: 1、菜单栏里的“动态”和“发现”分别是什么意思? ...查看全部
常见问题:

1、菜单栏里的“动态”和“发现”分别是什么意思?


2、如何发帖?如何使用“话题”?


3、发帖时,“问答”和“文章”有什么区别?


 


 

jvm 运行scala jar的问题。。

zp0824 回复了问题 2 人关注 3 个回复 2843 次浏览 2015-08-18 17:40 来自相关话题

spark中的reduce数量

时间不再回头 回复了问题 2 人关注 2 个回复 3037 次浏览 2015-08-18 17:38 来自相关话题

解压文件时,报 Cannot open: No space left on device

时间不再回头 回复了问题 2 人关注 3 个回复 2834 次浏览 2015-08-18 17:32 来自相关话题

Spark ML 文本分类问题

zp0824 回复了问题 2 人关注 1 个回复 3091 次浏览 2015-08-18 17:24 来自相关话题

hive 给表load时出错

zp0824 回复了问题 2 人关注 4 个回复 5766 次浏览 2015-08-18 17:08 来自相关话题

sparksql OOM错误

夕阳丶一抹红颜 回复了问题 2 人关注 2 个回复 2010 次浏览 2015-08-18 16:55 来自相关话题

streaming checkpoint的问题

zp0824 回复了问题 2 人关注 4 个回复 2144 次浏览 2015-08-18 16:51 来自相关话题

hadoop streaming

存在 回复了问题 3 人关注 2 个回复 1777 次浏览 2015-08-18 16:41 来自相关话题

camus将kafka数据导入hdfs报错

存在 回复了问题 3 人关注 5 个回复 3054 次浏览 2015-08-18 16:33 来自相关话题

spark streaming项目中遇到的问题

zp0824 回复了问题 2 人关注 2 个回复 2401 次浏览 2015-08-18 16:27 来自相关话题

hadoop业务迁移至虚拟化云平台问题

编程小梦 回复了问题 3 人关注 2 个回复 2936 次浏览 2015-08-18 09:50 来自相关话题

关于sqoop的使用

木子吉吉sir 回复了问题 5 人关注 3 个回复 2626 次浏览 2015-08-18 08:59 来自相关话题

Sqoop从Hive导入mysql失败解决方案

编程小梦 发表了文章 0 个评论 1427 次浏览 2015-08-17 19:42 来自相关话题

Sqoop从Hive导入mysql语句: sqoop export -D sqoop.export.records.per.statement=10 --connect jdbc:mysql:/ ...查看全部
 

Sqoop从Hive导入mysql语句:

sqoop export -D sqoop.export.records.per.statement=10 --connect jdbc:mysql://kks1:3306/sougou --username hive --password hive --table sougou --fields-terminated-by '\t' --export-dir "/hivedata/warehouse/sougou.db/sougou/month=6/week=1/day=1" --null-string '\\N' --null-non-string '\\N'
Sqoop从Hive导入mysql注意事项:

导入mysql前mysql必须建立和hive数据格式一致的表。

应确保mysql的数据类型长度大于相对应的hive数据的最大长度。

导入mysql前应确保相应的用户拥有远程登录MySQL的权限。

应该指定null字段的填充符。

如果之前已经导入了部分数据,需要继续导入,就必须指定更新的键。

--update-key
使用正确的分隔符。

如果你以上几点你都注意了,可能还是会遇到这个错误:

字段对不上或字段类型不一致

Caused by: java.lang.NumberFormatException: For input string: “什么是OSI参考模型?各层的主要功能是什么?] ″
出现这个问题的原因是数据本身的内容含有相应的分隔符,从而导致解析类型错位,进而解析失败。这条记录的源数据如下:

18:47:29 5999958585312108 [1. 什么是OSI参考模型?各层的主要功能是什么?] 9 68 www.eyea.net/bbs/index.php?mods=topicdisplay&forumid=62&postid=42
我们使用'\t'分割,所以sqoop把 什么是OSI参考模型?各层的主要功能是什么?] 当做 int类型解析,进而失败。

Sqoop从Hive导入mysql失败终极解决方案:

这个时候,我们所能做的就是修改,重新编译sqoop导入mysql解析规则的java文件。每次通过sqoop导入MySql的时,都会在sqoop目录生成一个以MySql表命名的.java文件,然后打成JAR包,给sqoop提交给hadoop 的MR来解析Hive表中的数据。那可以根据报的错误,找到对应的行,改写该文件,编译,重新打包,sqoop可以通过 -jar-file ,--class-name 组合让我们指定运行自己的jar包中的某个class。

编译打包方法如下:

javac -cp ./:/home/sqoop/sqoop-1.4.6.jar:/home/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar:/home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar sougou.java
jar -cf sougou.jar sougou.class
运行命令如下:

//hive导入mysql:

sqoop export -D sqoop.export.records.per.statement=10 --connect jdbc:mysql://kks1:3306/sougou --username hive --password hive --table sougou --fields-terminated-by '\t' --export-dir "/hivedata/warehouse/sougou.db/sougou/month=6/week=1/day=1" --null-string '\\N' --null-non-string '\\N' --jar-file /home/sqoop/sougou.jar --class-name sougou;
我们通过修改相关的java文件不仅可以解决各种解析异常,也可以实现自定义多字节列分隔符的功能。

更多话题 >>

热门话题

自然语言处理

366 个问题, 24 人关注

Spark

871 个问题, 219 人关注

Python

2469 个问题, 125 人关注

办公自动化

11 个问题, 1 人关注

人工智能

104 个问题, 41 人关注

更多用户 >>

热门用户

cc果冻儿

233 个问题, 0 次赞同

卓越助教

1111 个问题, 6 次赞同

秋名山coder

1 个问题, 0 次赞同

un_61e268c027065

0 个问题, 0 次赞同

胡大壮儿

0 个问题, 0 次赞同