scala

数据工程师必备的8项技能,不要只知道Python!

一世执手 提交于 2020-08-18 08:41:12
原作 :Mohammed M Jubapu 译者 :机器学习算法与Python实战(公众号ID:tjxj666) 英文 : https://www.linkedin.com/pulse/skills-build-data-engineering-mohammed-m-jubapu/ 数据工程师是当今市场上最受欢迎的工作之一。数据无处不在,被认为是新时代的能源。公司从不同来源生成大量数据,数据工程师的任务是组织数据信息的收集,处理和存储。但是,要成为一名数据工程师,您需要具备一些出色的技能,例如数据库,大数据,ETL和数据仓库,云计算以及编程语言。但是问题来了,您是否想拥有所有这些技能,或者您想使用所有工具?为简化此操作,让我们抓住机会,直接深入研究数据工程人才市场中的最新技能,这肯定会增加您现有的职业生涯或协助您开始数据工程之旅。 1-精通一种编程语言 是的,编程语言是数据工程的必备技能。多数职位概况要求精通至少一种编程语言。这些语言是ETL或数据管道框架所必需的。通用编程语言是总体上掌握数据工程和管道所需的核心编程技能。比如, Java和Scala 用于在Hadoop上编写MapReduce作业。 Python 是数据分析和管道的流行选择,而 Ruby 也是广泛流行的应用程序粘合剂。 2- Python是最受关注的技能 Python!Python!Python!是的,大约70

Apache DolphinScheduler(海豚调度)

痞子三分冷 提交于 2020-08-18 01:21:38
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 近日,伯毅同学给社区贡献了工作流核心表结构的剖析文章,非常细致,喜欢的伙伴请转走 1. 工作流总体存储结构 在 dolphinscheduler 库中创建的所有工作流定义(模板)都保存在 t_ds_process_definition 表中. 该数据库表结构如下表所示: 序号 字段 类型 描述 1 id int(11) 主键 2 name varchar(255) 流程定义名称 3 version int(11) 流程定义版本 4 release_state tinyint(4) 流程定义的发布状态:0 未上线 , 1已上线 5 project_id int(11) 项目id 6 user_id int(11) 流程定义所属用户id 7 process_definition_json longtext 流程定义JSON 8 description text 流程定义描述 9 global_params text 全局参数 10 flag tinyint(4) 流程是否可用:0 不可用,1 可用 11 locations text 节点坐标信息 12 connects text 节点连线信息

Java 的新未来:逐渐“Kotlin 化”

若如初见. 提交于 2020-08-17 18:16:50
我们行业始终有一个热门话题,那就是对 Java 的批判,这种批判很大程度上来源于 Java 的繁琐性以及它所生成的大量样板式代码 ,而这些代码在很多场景下是根本不需要的。 虽然我一直以来都很喜欢 Java,但是我不能说这些指责是错误的。的确,Java 的繁琐性以及数量不菲的杂乱代码在很多情况下会很烦人。在大多数情况下,我们不得不接受我们生活在一个不完美的世界这一现实,很多时候,我们必须两害相权取其轻。我们都知道,Java 并不完美,但是主要的问题在于在此之前为什么没有采取任何措施来解决这些问题呢? 我认为,变更需要耗费这么长时间的唯一原因就是 Java 缺乏足够的竞争。 Java 语言之所以能够主导市场,可能就是因为缺乏真正的竞争对手 ,当然也要归功于 Sun 和 Oracle 先后做出的巨大努力。 Java 提供的强类型安全性,以及作为一个结构良好的语言所带来的其他特性,使其成为大型项目中非常流行的语言 。通过使用 Java,我们很少会让事情变得难以收拾。Java 的另外一个重要特点是作为多平台语言,它运行在自己的虚拟机上,这使其能够完美契合很多的组织。如果你通过著名的 JIT 编译器启用了其自动性能优化的固有能力,那么在很多情况下都能将糟糕代码所带来的影响最小化,这样我们就有了一组使用 Java 的坚实理由。 但是,后来发生了什么呢?接下来的事情就是,能够像 Java

Spark之Spark Session、Dataframe、Dataset

风流意气都作罢 提交于 2020-08-17 15:52:38
Spark SQL简介 Spark SQL架构: Spark SQL是Spark的核心组件之一(2014.4 Spark1.0) 能够直接访问现存的Hive数据 提供JDBC/ODBC接口供第三方工具借助Spark进行数据处理 提供了更高层级的接口方便地处理数据 支持多种操作方式:SQL、API编程 支持多种外部数据源:Parquet、JSON、RDBMS等 Spark SQL是Spark的一个模块,主要用于处理结构化的数据。与基础的Spark RDD API不同的是,Spark SQL的接口会向提供更多的信息,包括数据结构以及要执行的计算操作等。在Spark SQL内部,会使用这些信息执行一些额外的优化。使用Spark SQL有两种方式,包括SQL语句以及Dataset API。 但是在计算的时候,无论你是用哪种接口去进行计算,它们使用的底层执行引擎是完全一模一样的。这种底层执行机制的统一,就意味着我们可以在不同的方式之间任意来回切换,只要我们可以灵活地运用不同的方式来最自然地表达我们要执行的计算操作就可以了。 对其中SQL的解释 Spark SQL的一个主要的功能就是执行SQL查询语句。Spark 2.0开始,最大的一个改变,就是支持了SQL 2003标准语法,还有就是支持子查询。 Spark SQL也可以用来从Hive中查询数据

[源码解析] GroupReduce,GroupCombine 和 Flink SQL group by

本小妞迷上赌 提交于 2020-08-17 08:55:10
[源码解析] GroupReduce,GroupCombine和Flink SQL group by 目录 [源码解析] GroupReduce,GroupCombine和Flink SQL group by 0x00 摘要 0x01 缘由 0x02 概念 2.1 GroupReduce 2.2 GroupCombine 2.3 例子 0x03 代码 0x04 Flink SQL内部翻译 0x05 JobGraph 0x06 Runtime 6.1 ChainedFlatMapDriver 6.2 GroupReduceCombineDriver 6.3 GroupReduceDriver & ChainedFlatMapDriver 0x07 总结 0x08 参考 0x00 摘要 本文从源码和实例入手,为大家解析 Flink 中 GroupReduce 和 GroupCombine 的用途。也涉及到了 Flink SQL group by 的内部实现。 0x01 缘由 在前文 [源码解析] Flink的Groupby和reduce究竟做了什么 中,我们剖析了Group和reduce都做了些什么,也对combine有了一些了解。但是总感觉意犹未尽,因为在Flink还提出了若干新算子,比如GroupReduce和GroupCombine。这几个算子不搞定,总觉得如鲠在喉

Python --深入浅出Apriori关联分析算法(一)

半城伤御伤魂 提交于 2020-08-17 04:34:55
在美国有这样一家奇怪的超市, 它将啤酒与尿布这样两个奇怪的东西放在一起进行销售,并且最终让啤酒与尿布这两个看起来没有关联的东西的销量双双增加 。这家超市的名字叫做沃尔玛。 你会不会觉得有些不可思议?虽然事后证明这个案例确实有根据,美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。但这毕竟是事后分析, 我们更应该关注的,是在这样的场景下,如何找出物品之间的关联规则 。接下来就来介绍下如何使用Apriori算法,来找到物品之间的关联规则吧。 一. Apriori关联分析概述 选择物品间的关联规则也就是要寻找物品之间的潜在关系。要寻找这种关系,有两步,以超市为例 找出频繁一起出现的物品集的集合,我们称之为 频繁项集 。比如一个超市的频繁项集可能有{{啤酒,尿布},{鸡蛋,牛奶},{香蕉,苹果}} 在 频繁项集 的基础上,使用 关联规则 算法找出其中物品的 关联结果 。 简单点说,就是先找频繁项集,再根据关联规则找关联物品。 为什么要先找频繁项集呢?还是以超市为例,你想想啊,我们找物品关联规则的目的是什么,是为了提高物品的销售额。如果一个物品本身购买的人就不多,那么你再怎么提升,它也不会高到哪去。所以从效率和价值的角度来说,肯定是优先找出那些人们频繁购买的物品的关联物品。 既然要找出物品的关联规则有两步,那我们也一步一步来

Kafka简介

帅比萌擦擦* 提交于 2020-08-16 19:10:51
Kafka Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。 1.介绍 消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一。下面将从Kafka文件存储机制和物理结构角度,分析Kafka是如何实现高效文件存储,及实际应用效果。 1.1 Kafka的特性: 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。 可扩展性:kafka集群支持热扩展 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败) 高并发:支持数千个客户端同时读写 1.2 Kafka的使用场景: 日志收集:一个公司可以用Kafka可以收集各种服务的log

Spark:统一分布式大数据分析引擎

帅比萌擦擦* 提交于 2020-08-16 01:27:11
LearningSpark 今年早些时候Spark3.0发布,前几天看到Spark学习手册也发布了第二版涵盖Spark3.0功能,想起刚开始学习Spark时就是读的这本书,最近有空就直播读下Spark学习手册第2版这本书,若能帮助到一些人也是好的! 从2020年8月3号每天早上5:30读LearningSpark这本书,如果你想学习大数据学习Spark想早起就可以一起来 直播间 ,如果你错过了直播也可以看视频回放! 第一章 Spark简介:统一的分析引擎 Spark学习手册第二版 LearningSpark2.0 2020080301 LearningSpark之Spark缘起 2020080302 LearningSpark之Google名字的来历 2020080303 LearningSpark之大数据在Yahoo 2020080304 LearningSpark之Spark光芒初露 2020080401 LearningSpark之脱离了大数据的人工智能就是耍流氓 2020080402 LearningSpark之Spark的Speed 2020080403 LearningSpark之Spark的易用模块化易扩展 2020080404 LearningSpark之一统大数据分析 2020080501 LearningSpark之SparkSQL 2020080502

日常记录——JVM—JVM简介、class文件解析

99封情书 提交于 2020-08-16 00:05:52
一、JVM简介 JVM :Java Virtual MAchine-Java虚拟机,可以将class文件解释为各种平台可执行的指令行,java中一个类在运行时,首先将java文件编译(javac)为class文件,然后jvm将class文件解释并执行。 JVM可分为三部分:类加载器(ClassLoader)系统、执行引擎、运行时数据区。 类加载器系统 :负责加载程序中的类和接口。 执行引擎 :解释执行+即时编译(JIT),开始对所有的代码都采取解释执行的方式,经常调用的热点方法编译为本地代码(热点代码频率设置-XX:CompileThreshould = 值(默认10000)),默认是解释执行+即时编译(-Xmixed)模式,可设置为纯解释(-Xint)或者纯编译(-Xcomp)模式,纯解释加载快,执行慢,纯编译加载慢,执行快。 运行时数据区 :程序计数器、本地方法栈、虚拟机栈、堆、方法区。 1.程序计数器:指向当前线程所执行的字节码的行号,线程私有。 2.本地方法栈:存储本地方法调用的状态,Native方法,线程私有。 3.虚拟机栈:存储局部变量表,操作数栈,动态链接,方法出口等信息,线程私有。 4.堆:虚拟机启动时创建,存放对象实例和数组,GC工作区域,线程共享。 5.方法区:存储类的信息,如常量(final)、静态变量(static)、JIT(即时编译器)编译后的代码

Gson2.8.6版本报错java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)

喜你入骨 提交于 2020-08-15 15:39:02
绪 最近在Scala的项目中尝试使用Gson来做json的数据解析;Scala自带和Jackson使用都太过繁琐; 使用Gson在scala代码如下;唯一的就是需要解析完后需要调用getAsXXX;嵌套对象需要重复执行这个方法;JsonParser在2.8.6里面new方法放弃了。推荐用静态方法;2.8.5里面,还是通过new来实例化JsonParser; val json = JsonParser.parseString(s) val obj = json.getAsJsonObject println(obj.get("@timestamp")) 但是在项目中,碰到一个错误。NoSuchMethodError。不知道如何下手了;本地跑可以,到集群就崩;错误如下: java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)Lcom/google/gson/JsonElement #1077 解决方法 换个低版本的2.8.5;正常不报错了、 val jsonParser = new JsonParser() val jsonObj = jsonParser.parse(line).getAsJsonObject 来源: oschina 链接: https://my