专栏首页木东居士的专栏憋瞎说,大数据不是你想的那样!

憋瞎说,大数据不是你想的那样!

学生党以及很多没设计过大数据开发的小伙伴呢,都对大数据这么一个领域感到非常非常的好奇非常非常的神秘,我今天就非要戳穿给你们看。

1、对,我们做大数据的也写普通的 Java 代码,写普通的 SQL。

比如 Java API版的 Spark 程序,长得跟 Java8 的Stream API 一样一样的。

JavaRDD<String> lines = sc.textFile("data.txt");
JavaRDD<Integer> lineLengths = lines.map(s -> s.length());
int totalLength = lineLengths.reduce((a, b) -> a + b);

再比如,删除一个 Hive 表。

DROP TABLE pokes;

2、对,Hadoop 、Spark 、Hive 的启动和机器运维都跟一个普通的 Java 应用和数据库没什么区别。

比如启动hdfs

bash ./start-dfs.sh

比如启动yarn

bash ./start-yarn.sh

比如启动hive

bash ./hive

完事了,有啥神秘的????不就是配一堆所有系统都有的配置吗?

3、对不起,没有一门叫数据仓库的技术。

数据仓库是一个集结了某个范围内所有经过清洗的统一的数据存储、分析的地点,并没有一门叫数据仓库的技术。

在实战中,我们一般会使用 Hive 来当数据仓库的载体,在没有大数据基础架构的公司也会使用各种传统 DB 来当数据仓库的载体,所以不要再说什么你要学习数据仓库 ok ? 要学 Hive 就说要学 Hive,要学数据治理就说要学数据治理。

4、对,我们大数据就是死写SQL的,但脑回路跟你们不一样

你们写 SQL 优先想功能,我们写SQL优先想这他妈能不能跑出来。

你们写 SQL 可以一直调一直调,我们写 SQL 要想好久才调一次,连机器是什么跑的都要想清楚。

你们写 SQL 压根不管数据分布,我们写 SQL 第一件事就是他妈不会数据倾斜吧?

你们写 SQL 用都能直接写,我们写 SQL 前要写一万个 SQL 做数据清洗。

5、对,10倍,100倍,100万倍 的数据增长我们就需要一直改方案,改改改。

你的 SQL 在10倍量下能跑,在100万倍下,你可能要付出非常久非常久的思考和努力才能基本跑出来,比如一个简单的去重统计。

你的SQL count(1) group by 一下就出来了。

我的如果写得跟你一样我估计这辈子都出不来结果了。

不解释了,大数据计数系列了解一下。

6、Spark 很快,但 Spark 也很慢

Spark是纯内存计算,但Spark也是批量计算,其中存在的缺陷你们思考一下,对比一下 FLink 这类纯流式计算。

7、即使你有100T数据,你也不是在做大数据。

第一数据存储占用空间大不代表就是大数据,第二即使你数据量级够思维不对你也不是在做大数据。

8、大数据跟机器学习是一家,压根离不开

你可能永远也不会知道 分而治之,统计学,概率论 在这两个学科的统一性和重要性。

9、对不起,你别以为大数据只有 Hadoop,大数据技术栈广和深得你几乎不可想象。

你以为你学完了,完全不可"棱"。

先这样,不知道写啥了,以上。

本文分享自微信公众号 - 木东居士(Data_Engineering)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java虚拟机最多支持多少个线程?

    McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗...

    Java技术栈
  • 这个中秋,我用 Java 画了一个月饼!

    今年中秋节,我又想写点不一样的来给大家祝福,用 Java 来画一个月饼,听起来是不是很好玩?

    Java技术栈
  • 一种非大小排序(先后关系排序)—拓扑排序

    在以前很多人可能听过拓扑排序,但可能认为它太难而不愿接触学习,也不清楚是排啥序的,然而拓扑排序实际很简单,生活中也很常用,面试笔试也会遇到,所以掌握拓扑排序已是...

    全菜工程师小辉
  • 什么是 Java 对象深拷贝?面试必问!

    浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。

    Java技术栈
  • 请你解释一下什么是线程池(thread pool)?

    在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销...

    剑走天涯
  • 「Java Grammar」:运算符

    计算机自打诞生以来,用作最多的就是进行计算,而计算离不开运算符,所以运算符在我们的Java语言中的地位举足轻重,我们现在就来了解一下Java给我们提供的运算符。

    Vi的技术博客
  • AsyncContext异步请求的用法

    在Servlet 3.0中,在ServletRequest上提供了startAsync()方法

    全菜工程师小辉
  • 从头到尾说一次 Java 垃圾回收,写得非常好!

    之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。?

    Java技术栈
  • 一起学Rust-实战leetcode(三)

    之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

    江湖安得便相忘
  • Java 中的 T,E,K,V, 别傻傻分不清楚!

    https://juejin.im/post/5d5789d26fb9a06ad0056bd9

    Java技术栈

扫码关注云+社区

领取腾讯云代金券