大数据常用十种开发语言

article/2025/10/20 18:48:38

    随着大数据热潮持续延烧,几乎每个产业都有如洪水般倾泻的信息,面对上万笔的顾客浏览纪录、购买行为数据,如果要用 Excel 来进行数据处理真是太不切实际了,Excel 相较于其他统计软件的功能已相去甚远;但如果只会操作统计软件而不会用逻辑分析数据背后的涵义与事实现况相应证的话,那也不过只能做数据处理,替代性很高的工作,而无法深入规划策略的核心。

  当然,基本功是最不可忽略的环节,想要成为数据科学家,对于这几个程序你应该要有一定的认识:

  R

  若要列出所有程序语言,你能忘记其他的没关系,但最不能忘的就是 R。从 1997 年悄悄地出现,最大的优势就是它免费,为昂贵的统计软件像是 Matlab 或 SAS 的另一种选择。

  但是在过去几年来,它的身价大翻转,变成了资料科学界眼中的宝。不只是木讷的统计学家熟知它,包括 Wall Street 交易员、生物学家,以及硅谷开发者,他们都相当熟悉 R。多元化的公司像是 Google、Facebook、美国银行以及 New York Times 通通都使用 R,它的商业效用持续提高。

  R 的好处在于它简单易上手,透过 R,你可以从复杂的数据集中筛选你要的数据,从复杂的模型函数中操作数据,建立井然有序的图表来呈现数字,这些都只需要几行程序代码就可以了,打个比方,它就像是好动版本的 Excel。

  R 最棒的资产就是活跃的动态系统,R 社群持续地增加新的软件包,还有以内建丰富的功能集为特点。目前估计已有超过 200 万人使用 R,最近的调查显示,R 在数据科学界里,到目前为止最受欢迎的语言,占了回复者的 61%(紧追在后的是 39% 的 Python)。

  它也吸引了 Wall Street 的注目。传统而言,证券分析师在 Excel 档从白天看到晚上,但现在 R 在财务建模的使用率逐渐增加,特别是可视化工具,美国银行的副总裁 Niall O’Conno 说,「R 让我们俗气的表格变得突出」。

  在数据建模上,它正在往逐渐成熟的专业语言迈进,虽然 R 仍受限于当公司需要制造大规模的产品时,而有的人说他被其他语言篡夺地位了。

  “R 更有用的是在画图,而不是建模。”顶尖数据分析公司 Metamarkets 的 CEO,Michael Driscoll 表示,
“你不会在 Google 的网页排名核心或是 Facebook 的朋友们推荐算法时看到 R 的踪影,工程师会在 R 里建立一个原型,然后再到 Java 或 Python 里写模型语法”。

  举一个使用 R 很有名的例子,在 2010 年时,Paul Butler 用 R 来建立 Facebook 的世界地图,证明了这个语言有多丰富多强大的可视化数据能力,虽然他现在比以前更少使用 R 了。

  “R 已经逐渐过时了,在庞大的数据集底下它跑的慢又笨重”Butler 说。

  所以接下来他用什么呢?

http://techorange.com/wp-content/uploads/2014/05/python-logo-master-v3-TM.png

  Python

  如果说 R 是神经质又令人喜爱的 Geek,那 Python 就是随和又好相处的女生。

  Python 结合了 R 的快速、处理复杂数据采矿的能力以及更务实的语言等各个特质,迅速地成为主流,Python 比起 R,学起来更加简单也更直观,而且它的生态系统近几年来不可思议地快速成长,在统计分析上比起 R 功能更强。

  Butler 说,“过去两年间,从 R 到 Python 地显著改变,就像是一个巨人不断地推动向前进‘。

  在数据处理范畴内,通常在规模与复杂之间要有个取舍,而 Python 以折衷的姿态出现。IPythonNotebook(记事本软件)和 NumPy 被用来暂时存取较低负担的工作量,然而 Python 对于中等规模的数据处理是相当好的工具;Python 拥有丰富的资料族,提供大量的工具包和统计特征。

  美国银行用 Python 来建立新产品和在银行的基础建设接口,同时也处理财务数据,“Python 是更广泛又相当有弹性,所以大家会对它趋之若鹜。”O’Donnell 如是说。

  然而,虽然它的优点能够弥补 R 的缺点,它仍然不是最高效能的语言,偶尔才能处理庞大规模、核心的基础建设。Driscoll 是这么认为的。

  Julia

  今日大多数的数据科学都是透过 R、Python、Java、Matlab 及 SAS 为主,但仍然存在着鸿沟要去弥补,而这个时候,新进者 Julia 看到了这个痛点。

  Julia 仍太过于神秘而尚未被业界广泛的采用,但是当谈到它的潜力足以抢夺 R 和 Python 的宝座时,数据黑客也难以解释。原因在于 Julia 是个高阶、不可思议的快速和善于表达的语言,比起 R 要快的许多,比起 Python 又有潜力处理更具规模的数据,也很容易上手。

  “Julia 会变的日渐重要,最终,在 R 和 Python 可以做的事情在 Julia 也可以”。Butler 是这么认为的。

  就现在而言,若要说 Julia 发展会倒退的原因,大概就是它太年轻了。Julia 的数据小区还在初始阶段,在它要能够和 R 或 Python 竞争前,它还需要更多的工具包和软件包。

  Driscoll 说,它就是因为它年轻,才会有可能变成主流又有前景。

/uploadImages/2014/211/A4QCXC828LU7.jpg

   Java

  Driscoll 说,Java 和以 Java 为基础的架构,是由硅谷里最大的几家科技公司的核心所建立的,如果你从 Twitter、Linkedin 或是 Facebook 里观察,你会发现 Java 对于所有数据工程基础架构而言,是非常基础的语言。

  Java 没有和 R 和 Python 一样好的可视化功能,它也不是统计建模的最佳工具,但是如果你需要建立一个庞大的系统、使用过去的原型,那 Java 通常会是你最基的选择。

   Hadoop and Hive

  为了迎合大量数据处理的需求,以 Java 为基础的工具群兴起。Hadoop 为处理一批批数据处理,发展以 Java 为基础的架构关键;相较于其他处理工具,Hadoop 慢许多,但是无比的准确和可被后端数据库分析广泛使用。和 Hive 搭配的很好,Hive 是基于查询的架构下,运作的相当好。

  Scala

  又是另一个以 Java 为基础的语言,和 Java 很像,对任何想要进行大规模的机械学习或是建立高阶的算法,Scala 会是逐渐兴起的工具。它是善于呈现且拥有建立可靠系统的能力。

  “Java 像是用钢铁建造的;Scala 则是让你能够把它拿进窑烤然后变成钢的黏土”Driscoll 说。

  Kafka and Storm

  说到当你需要快速的、实时的分析时,你会想到什么?Kafka 将会是你的最佳伙伴。其实它已经出现五年有了,只是因为最近串流处理兴起才变的越来越流行。

  Kafka 是从 Linkedin 内诞生的,是一个特别快速的查询讯息系统。Kafka 的缺点呢?就是它太快了,因此在实时操作时它会犯错,有时候会漏掉东西。

  鱼与熊掌不可兼得,「必须要在准确度跟速度之间做一个选择」,Driscoll 说。所以全部在硅谷的科技大公司都利用两个管道:用 Kafka 或 Storm 处理实时数据,接下来打开 Hadoop 处理一批批处理数据系统,这样听起来有点麻烦又会有些慢,但好处是,它非常非常精准。

  Storm 是另一个从 Scala 写出来的架构,在硅谷逐渐大幅增加它在串流处理的受欢迎程度,被 Twitter 并购,这并不意外,因为 Twitter 对快速事件处理有极大的兴趣。

http://techorange.com/wp-content/uploads/2014/05/MATLABlog-550x338.png

   Matlab

  Matlab 可以说是历久不衰,即使它标价很高;在非常特定的利基市场它使用的相当广泛,包括密集的研究机器学习、信号处理、图像辨识等等。

   Octave

  Octave 和 Matlab 很像,除了它是免费的之外。然而,在学术信号处理的圈子,几乎都会提到它。

   GO

  GO 是另一个逐渐兴起的新进者,从 Google 开发出来的,放宽点说,它是从 C 语言来的,并且在建立强大的基础架构上,渐渐地成为 Java 和 Python 的竞争者。

  这么多的软件可以使用,但我认为不见得每个都一定要会才行,知道你的目标和方向是什么,就选定一个最适合的工具使用吧!可以帮助你提升效率又达到精准的结果。


http://chatgpt.dhexx.cn/article/JSiI1Eou.shtml

相关文章

大数据开发都需要掌握哪些编程语言

当前正处在大数据时代背景下,大数据技术目前也正处在落地应用的初期,未来大数据的发展空间还是比较大的,所以学习大数据相关技术是个不错的选择。 大数据编程语言的选择要根据具体的工作岗位来进行,目前大数据领域的工作岗位包括大数据平台研发、大数据应用开发、大数据分…

linux卸载自带java JDK,安装配置java jdk环境

一、卸载 openjdk 1、查看 java 版本时,显示已经安装了 openjdk,需要卸载 [rootxxx ~]# java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixe…

Java 线程安全与锁

多线程内存模型 线程私有栈内存 每个线程 私有的内存区域进程公有堆内存 同一个进程 共有的内存区域 为什么会有线程安全问题? 多个线程同时具有对同一资源的操作权限,又发生了同时对该资源进行读取、写入的情况,那么就会出现重复操作的情…

java线程和锁

锁,是计算机系统中非常常见的技术,实现线程对资源的独占,防止对资源的并发读写造成错误,本文通过从线程,线程状态,到java提供的锁基础,基础的复盘一下线程和锁线程 计算机系统中,经…

Java线程里的14种锁

参考资料: 不可不说的Java“锁”事 java多线程的15种锁 以下内容是参考上面两片文章写出的粗略总结, 想要细究可以看上面两位大佬写的文章, 由于是参考着写的, 所以有很多地方相同, 如果有侵权或不妥的地方还请联系删除. 一. 线程是否同步资源? 1. 悲观锁 : 同步 每次拿数…

Java多线程 各种锁(一篇全搞懂)

Java多线程 锁 文章目录 Java多线程 锁1、乐观锁与悲观锁2、公平锁与非公平锁3、可重入锁与不可重入锁4、独享锁与共享锁5、自旋锁 VS 适应性自旋锁6、无锁 、 偏向锁、量级锁 和 重量级锁(难点) 1、乐观锁与悲观锁 (1)悲观锁 对…

Java多线程编程(三)——线程锁

卖票案例 同步代码块解决数据安全问题 同步方法解决数据安全问题 同步方法的格式: 同步方法和同步方法块的区别: 同步静态方法 Lock锁 卖票案例 某电影院目前正在上映国产大片,共有30张票,而它有3个窗口卖票,请…

浅析Java 多线程中的锁

前言 随着互联网技术的快速发展,多线程编程已经成为了现今编程领域中必不可少的知识点之一。Java 是一种广泛使用的编程语言,也是一些底层应用程序和高并发应用程序的首选语言。而 Java 提供的多线程编程机制和相关的锁机制,则成为了 Java 开…

【Java多线程进阶】常见的锁策略

前言 众所周知,拳击运动员是要分等级(轻量级、重量级等等)来参加比赛的,在 Java 多线程中 锁(synchronized) 也会根据锁的竞争程度来升级为相关“高等级”锁,为了更好的理解 synchronized 加锁机…

Java多线程下——各类锁的详解

这里写目录标题 各类锁的详解常见的锁策略乐观锁 vs 悲观锁读写锁重量级锁 vs 轻量级锁自旋锁(Spin Lock)公平锁 vs 非公平锁可重入锁 vs 不可重入锁 CASSynchronized 原理偏向锁锁消除锁粗化 Callable 接口ReentrantLock线程池ExecutorService 和 Execu…

Java中的线程和锁机制

线程池 为什么使用线程池?线程池执行原理?线程池参数有哪些?线程池大小怎么设置?线程池的类型有哪些?适用场景? 进程线程 线程的生命周期讲一下线程中断?创建线程有哪几种方式?什么是…

【Java】中的多线程线程锁

多线程 文章目录 多线程线程的创建和启动sleep()stop() 线程的休眠和中断线程的优先级线程的礼让和加入yield()stop() 线程锁和线程同步synchronized 关键字 死锁概念 wait & notify methodThreadLocal的使用定时器 Timer守护线程再谈集合类parallelStreamforEachOrdered()…

Java多线程中 的各种锁

学习 java 多线程时,最头疼的知识点之一就是 java 中的锁了,什么互斥锁、排它锁、自旋锁、死锁、活锁等等,细分的话可以罗列出 20 种左右的锁,光是看着这些名字就足以让人望而却步了,更别说一个个去理解它们的含义了。…

Java——多线程和锁

多线程 前言:当我们打开一个网站时,不同部分的加载并不是先后出现的,是并行出现的,没有出现一个地方没加载完,别的地方就也加载不出来这种事。这个就是多线程并行运行。 当其中一个线程发生阻塞时,操作系统会自动执行…

Java-多线程中的“锁“

文章目录 Java多线程中的锁1. 什么是锁?2. 锁的作用3. 锁的类型4. 锁的使用示例5.乐观锁和悲观锁6. 锁的注意事项总结 Java多线程中的锁 在Java多线程编程中,锁是一种重要的同步机制,用于保护共享资源的访问。使用锁可以防止多个线程同时对共…

JAVA三种线程锁

内置锁:synchriozed,关键字,同步代码块,object.wait和object.notify/notifyall 显示锁:Lock,JUC包下的类,同步代码块,condition.await和condition.signal/signalall 原子类&#xff…

Java多线程中锁的理解与使用

1.简介 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等 ) 。 2.Java锁的种类 公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁 上面是很多锁…

java多线程的15种锁

1 java锁分类 下面我们依照序号依次的介绍每一种锁 2 悲观锁和乐观锁 悲观锁和乐观锁是一种广义的概念,体现的是看待线程同步的不同的角度 悲观锁认为自己在使用数据的时候,一定有别的线程来修改数据,在获取数据的时候会先加锁&#xff0c…

Java多线程 - 锁

Java多线程 - 锁 三性 可见性 指的是线程之间的可见性,一个线程对状态的修改,对其他线程是可见的。在 Java中 volatile、synchronized 和 final 实现可见性。 原子性 如果一个操作是不可分割的,我们则称之为原子操作,也就是有原…

Java多线程与锁

前文中,我们已经了解了什么是线程,线程间常用通信方式,线程池以及其相关特性,可以看出锁在多线程环境中充当着重要作用,不管是线程间的数据通信,还是线程间的等待和唤醒,都依赖于锁,…