大数据(8c)RDD编程指南Scala版

Spark Scala版本 | 选择题汇总 文章目录选择题总结 (89个题)第1章 大数据技术概述 (10个题)第2章 Scala 语言基础 (20个题)第3章 Spark的设计与运行原理 (10个题)第4章 Spark环境搭建和使用方法 (10个题)第5章 RDD编程 (10个题)第6章 Spark SQL (10个题)第7章 Spark Streaming (11个题)第8章 Spark MLlib (8个题) 选择题总结 (89个题) 第1章 大数据技术概述 (10个题) ‎1.1 大数据技术及其代表性的软件种类很多,不同的技术有其不同应用场 阅读详情

1、什么是RDD

https://yellow520.blog.youkuaiyun.com/article/details/117388042

2、初始化

依赖

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.12</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.12</artifactId>
    <version>3.0.2</version>
</dependency>

导包,创建Spark对象

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
// 创建SparkConf对象,并设定配置
val conf = new SparkConf().setAppName("应用程序名称").setMaster("local")
// 创建SparkContext对象,Spark通过该对象访问集群
val sc = new SparkContext(conf)
setMaster参数说明核心数
local本地单核
local[4]本地4核
local[*]本地核心数=本地核心数
yarn让YARN来管理资源

3、分区(partition)

mapPartitionsWithIndex【重点】

val conf = new SparkConf().setAppName("名").setMaster("local[*]")
val sc = new SparkContext(conf)
val rdd0: RDD[Int] = sc.makeRDD(Range(0, 4), numSlices = 3)
val rdd1: RDD[(String, Int)] = rdd0.mapPartitionsWithIndex(
  (index, items) => items.map(("分区" + index, _))
)
rdd1.collect.foreach(println)
打印结果
(分区0,0)
(分区1,1)
(分区2,2)
(分区2,3)

查看分区【重点】

val rdd = sc.makeRDD(Range(0, 4), numSlices=5)
// 查看分区数;源码【partitions.length】
println("分区数:" + rdd.getNumPartitions)
打印结果
分区数:5
// 查看各分区元素
rdd.mapPartitionsWithIndex(
  (pId, iter) => {
    println("分区" + pId + "元素:" + iter.toList)
    iter
  }
).collect
打印结果
分区0元素:List()
分区2元素:List(1)
分区3元素:List(2)
分区4元素:List(3)
分区1元素:List(0)
// 重新分区:repartition、coalesce
rdd.coalesce(3).mapPartitionsWithIndex(
  (pId, iter) => {
    println("分区" + pId + "元素:" + iter.toList)
    iter
  }
).collect
打印结果
分区0元素:List()
分区2元素:List(2, 3)
分区1元素:List(0, 1)

makeRDD的默认分区规则

源码在org.apache.spark.rdd.ParallelCollectionRDD.slice里的positions

def positions(length: Long, numSlices: Int): Iterator[(Int, Int)] = {
  (0 until numSlices).iterator.map { i =>
    val start = ((i * length) / numSlices).toInt
    val end = (((i + 1) * length) / numSlices).toInt
    (start, end)
  }
}

把上面翻译成下面Python代码,逻辑就清晰可见了

def position(num_slices):
    for i in range(num_slices):
        start = i / num_slices
        end = (i + 1) / num_slices
        yield start, end

def slice_up(ls, num_slices):
    l = len(ls)
    for start, end in position(num_slices):
        partition = ls[int(start * l): int(end * l)]
        print(start, end, partition)

slice_up([1, 2, 3, 4, 5], 4)
打印结果
0.0 0.25 [1]
0.25 0.5 [2]
0.5 0.75 [3]
0.75 1.0 [4, 5]

4、RDD常用算子

https://yellow520.blog.youkuaiyun.com/article/details/117412628

5、RDD序列化

  • 序列化:将对象的状态信息转换为可存储或传输的形式的过程
  • 跨进程通信时,需要序列化
  • 作用提交前(源码runJob),其中有行代码val cleanedFunc = clean(func)用来判断函数是否实现了序列化,这叫做闭包检查

序列化实现代码

示例如下,关键词Serializable

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.rdd.RDD

object Hello {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("名").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val r: RDD[Hero] = sc.makeRDD(Seq(new Hero("剑圣"), new Hero("先知")))
    r.foreach(print) //打印结果:Hero(先知)Hero(剑圣)
  }
}

class Hero(var name: String) extends Serializable {
  override def toString: String = s"Hero($name)"
}

Kryo序列化框架

Spark支持另外一种序列化机制,叫Kryo,速度很快,但不是所有东西都能用

import org.apache.spark.{SparkConf, SparkContext}

object Hello {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf()
      .setAppName("a1")
      .setMaster("local[*]")
      // 替换默认的序列化机制
      .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
      // 注册需要使用 Kryo 序列化的自定义类
      .registerKryoClasses(Array(classOf[MyFilter]))
    val sc = new SparkContext(conf)
  }
}

case class MyFilter(name: String) {}

6、RDD持久化

RDD可用cache方法(底层调用persist)来缓存(默认在内存)中间结果

import org.apache.spark.{SparkContext, SparkConf}

object Hello {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("a1").setMaster("local")
    val sc = new SparkContext(conf)
    val r = sc.makeRDD(Seq("a", "b"), 2).map((_, System.currentTimeMillis()))
    //查看原血缘
    println(r.toDebugString)
    //数据缓存(cache操作会增加血缘关系)
    r.cache()
    //打印,留意时间
    r.foreach(print)
    println("\n-------------------------------------------------")
    //查看更新后的血缘
    println(r.toDebugString)
    //再次打印,留意时间
    r.foreach(print)
  }
}

打印结果

StorageLevel源码查看

7、RDD血缘

toDebugString查看RDD全链

import org.apache.spark.{SparkContext, SparkConf}

object Hello {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("名").setMaster("local")
    val sc = new SparkContext(conf)
    val r0 = sc.makeRDD(Seq("a", "b", "b"))
    println(r0.toDebugString)
    println("--------------------------------------------------------------------")
    val r1 = r0.flatMap(_.split(" "))
    println(r1.toDebugString)
    println("--------------------------------------------------------------------")
    val r2 = r1.map((_, 1))
    println(r2.toDebugString)
    println("--------------------------------------------------------------------")
    val r3 = r2.reduceByKey(_ + _)
    println(r3.toDebugString)
  }
}
/*
打印结果
    (1) ParallelCollectionRDD[0] at makeRDD at Hello.scala:7 []
    --------------------------------------------------------------------
    (1) MapPartitionsRDD[1] at flatMap at Hello.scala:10 []
     |  ParallelCollectionRDD[0] at makeRDD at Hello.scala:7 []
    --------------------------------------------------------------------
    (1) MapPartitionsRDD[2] at map at Hello.scala:13 []
     |  MapPartitionsRDD[1] at flatMap at Hello.scala:10 []
     |  ParallelCollectionRDD[0] at makeRDD at Hello.scala:7 []
    --------------------------------------------------------------------
    (1) ShuffledRDD[3] at reduceByKey at Hello.scala:16 []
     +-(1) MapPartitionsRDD[2] at map at Hello.scala:13 []
        |  MapPartitionsRDD[1] at flatMap at Hello.scala:10 []
        |  ParallelCollectionRDD[0] at makeRDD at Hello.scala:7 []
*/

dependencies查看依赖(上一个RDD)

import org.apache.spark.{SparkContext, SparkConf}

object Hello {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("名").setMaster("local")
    val sc = new SparkContext(conf)
    val r0 = sc.makeRDD(Seq("a", "b", "b"))
    println(r0.dependencies)
    println("--------------------------------------------------------------------")
    val r1 = r0.flatMap(_.split(" "))
    println(r1.dependencies)
    println("--------------------------------------------------------------------")
    val r2 = r1.map((_, 1))
    println(r2.dependencies)
    println("--------------------------------------------------------------------")
    val r3 = r2.reduceByKey(_ + _)
    println(r3.dependencies)
  }
}
/*
打印结果
    List()
    --------------------------------------------------------------------
    List(org.apache.spark.OneToOneDependency@29a4f594)
    --------------------------------------------------------------------
    List(org.apache.spark.OneToOneDependency@3051e0b2)
    --------------------------------------------------------------------
    List(org.apache.spark.ShuffleDependency@3f985a86)
*/

窄依赖

每一个父RDD的Partition最多被子RDD的一个Partition使用

宽依赖

ShuffleDependency
同一个父RDD的partition被多个子RDD的partition依赖,会引起shuffle

任务(Job)和阶段(Stage)的划分

name译名说明
Standalone模式
或
YARN模式
集群一个Spark集群可以同时运行多个Spark应用
Application应用一个应用可以并发的运行多个Job
Job作业Job对应着应用中的行动算子,每次执行一个行动算子,都会提交一个Job
一个Job由多个Stage组成
Stage阶段一个宽依赖做一次阶段的划分
阶 段 数 = 宽 依 赖 数 + 1 阶段数 = 宽依赖数 + 1 阶段数=宽依赖数+1
一个Stage由多个Task组成
Task任务每一个阶段最后一个RDD的分区数,就是当前阶段的Task个数

代码图

import org.apache.spark.{SparkContext, SparkConf}
val conf = new SparkConf().setAppName("A1").setMaster("local[2]")
val sc = new SparkContext(conf)
val r0 = sc.makeRDD(Seq("a", "b", "b", "c", "c"))
val r1 = r0.map((_, 1))
val r2 = r1.reduceByKey(_ + _)
println(r1.collect.toList) // List((a,1), (b,1), (b,1), (c,1), (c,1))
println(r2.collect.toList) // List((b,2), (a,1), (c,2))
Thread.sleep(999999)


Appendix

en🔉cn
sparkspɑːrkn. 火花;导火线;活力;v. 点燃;
resilient/rɪˈzɪliənt/有弹力的
parallel/ˈpærəlel/平行线;平行的
parallelize/'pærəlelaɪz/v. 平行放置
coalesce/ˌkoʊəˈles/v 合并
intersection/ˌɪntərˈsekʃn/交集
subtract/səbˈtrækt/vt. 减去;扣掉
aggregate/ˈæɡrɪɡət/n. 合计;adj. 聚合的;v. 聚集
glom/ɡlɑːm/vt. 偷;抢;n. 一瞥
serializable/ˈsɪˌriəˌlaɪzəbl/可序列化
persist/pərˈsɪst/vi. 存留;固执;vt. 坚持说
stagesteɪdʒn. 阶段;舞台;戏剧;驿站;v 举行
Scala 编程指南-课件版本 概述 Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起。传统业务开发- 领域模型设计(面向对象开发); 大数据开发 - 数据集计算模型-(函数式编程)。函数编程强调的是程序对数据的运行算能力。在面向对象计算数据的时候采取代码不动移动数据.在函数式编程计算的时候数据不动代码动。Scala是一门多范式的编程语言,同时支持面向对象和面向函数编程风格。它以一种优雅的方式解决现实问题。虽然它是强静态类型的编程语言,但是它强大的类型推断能力,使其看起来就像是一个动态编程语言一样。Scala语言最终会被翻译 阅读详情

相关推荐

RDD编程初级实践

RDD编程初级实践1、需求描述2、环境介绍系统介绍本实验的编程环境3、数据来源描述1) Pyspark交互式编程2) 编写独立应用程序实现数据去重3) 编写独立应用程序实现求平均值问题4、数据上传及上传结果5、数据处理过程描述pyspark交互式编程编写独立应用程序实现数据去重编写独立应用程序实现求平均值问题6、经验总结 1、需求描述 在当今信息化时代中,随着大数据的快速发展情况下,大数据应用于社会的各方面的发展及进步。通过实验使我们熟悉Spark的RDD基本操作和键值对操作;以及熟悉使用RDD编程解决实际

JR's 博客 778

Flowable迁移中的数据库兼容性艺术:从Oracle到TiDB的平滑过渡

本文深入探讨了Flowable工作流引擎从Oracle迁移到TiDB的数据库兼容性实践,揭示了千万级流程实例迁移的技术细节与优化策略。通过真实案例展示了数据类型转换、性能调优和高可用架构设计等关键环节,帮助企业在分布式环境下实现平滑过渡与性能提升。

web99的专栏 174

大数据学习23:Spark:大数据的计算引擎(Scala开发环境安装)

第一部分:Scala编程语言 第二部分:Spark Core内核(最重要的内容)—> 概念RDD:相当于MapReduce 第三部分:Spark SQL:相当于Hive,也支持SQL语句 -----> 底层依赖Spark Core ----> 依赖RDD 第四部分:Spark Streaming:相当于Storm用于流式计算 - ----> 底层依赖Spark Core -...

weixin_44804248的博客 323

python程序编程代码大全,python编程代码详解

大家好,本文将围绕python程序编程代码大全展开说明,python编程游戏代码是一个很多人都想弄明白的事情,想搞清楚python代码大全简单需要先了解以下几个事情。

chatgpt001的博客 5万+

【小白视角】大数据基础实践(七) Spark的基本操作_spark操作类型

RDD的和actions。

2401_84187537的博客 971

android mtk camera如何自定义默认拍照与录像分辨率

本文详细解析了在Android MTK平台上自定义相机默认拍照与录像分辨率的方法。通过分析Camera2应用默认选择逻辑,定位并修改PictureSize.java与VideoQualityCaptureRequestConfig.java中的关键代码,实现绕过系统智能选择,强制指定最高或特定分辨率。文章还提供了进阶的可配置化方案与验证避坑指南,帮助开发者精准控制相机行为。

weixin_29194817的博客 434

python安装方法_Python入门基础教程(非常详细)

Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。这套 Python 基础教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。如果有小朋...

weixin_39813200的博客 2612

FeynRules的上手使用3--运行

FeynRules的运行 接上两篇,在我们正确的设定模型参数和拉氏量之后,就可以运行FeynRules来推导费曼规则。 装载文件 首先需要设定FeynRules文件所在位置,并装载FeynRules模块: $FeynRulesPath = SetDirectory[ ] << FeynRules` 接下来是装载写好的模型文件: LoadModel[ < file.fr >, < file2.fr >, … ] 模型文件后缀为".fr",可以分几块构成。模型描述可以写在

cool_bot的博客 1076

详解RDD基本概念、RDD五大属性

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD是spark core的底层核心。Dataset:RDD 可以不保存具体数据, 只保留创建自己的必备信息, 例如依赖和计算函数;RDD 也可以缓存起来, 相当于存储具体数据。Distributed: RDD 支持分区, 可以运行在集群中。Resilient:RDD 支持高效的容错;RDD 中的数据即可以缓存在内存中

大数据 1万+

Image Sensor常见分辨率下HTS,VTS设置

image sensor,HTS,VTS

propor的专栏 4978

Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置)

本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。

weixin_29200741的博客 333

【2024】Python入门,详细基础教程,零基础入门,详细图文

Python入门基础介绍

weixin_42399800的博客 17万+

XGBoost特征重要性为0的问题:深度解析与应对策略

在机器学习领域,XGBoost(Extreme Gradient Boosting)作为一款高效且强大的集成学习算法,已经被广泛应用于各类预测任务中。然而,在实际应用过程中,许多数据科学家和工程师们遇到了一个令人困惑的现象——某些特征的重要性值为0。这不仅影响了模型的解释性,还可能导致特征选择过程中的误判。本文将深入探讨这一问题,分析其背后的原因,并提供相应的解决方案。在深入探讨特征重要性为0的问题之前,我们首先需要了解XGBoost是如何计算特征重要性的。XGBoost提供了三种常见的特征重要性计算方法:

cda2024的博客 1706

Scala编程指南-第二版

Scala Language 语言介绍 Scala是一门多范式的编程语言,同时支持面向对象和面向函数编程风格。它以一种优雅的方式解决现实问题。虽然它是强静态类型的编程语言,但是它强大的类型推断能力,使其看起来就像是一个动态编程语言一样。Scala语言最终会被翻译成java字节码文件,可以无缝的和JVM集成,并且可以使用Scala调用java的代码库。除了Scala编程语言自身的特性以外,目前比较流...

麦田里的守望者-蒋中洲【相信相信的力量】 882

soul聊天协议逆向

通过观察上面的CFG发现,该混淆符合以下逻辑,整体思路就是先查找主分发器,一般被引用次数最多的那个块就是主分发器,引用主分发器的块大概率是真实块,再使用unicorn模拟执行,遍历每一个分支,记录每一个块,如果某一个块是上次记录的块则也为真实块,无后继的块则为retn块,剩下的就是无用块。通过Frida Hook libc.so后发现,聊天协议走的是JAVA层的socket,然后Hook JAVA层相关函数得到如下调用堆栈。里面调用的函数不是很多,所以。不行不行,革命要彻底!

2503_90751789的博客 3217

在Simulink中构建永磁同步电机的网络化控制模型,并分析通信网络对系统性能的影响

核心优势通过仿真验证了网络延迟和丢包对PMSM控制性能的影响。提供了改进PI参数或引入自适应控制的解决方案。扩展方向抗干扰控制:结合卡尔曼滤波或滑模控制抑制网络噪声。时间敏感网络(TSN)建模:参考知识库[2]的中断触发方式,实现确定性通信。网络安全仿真:模拟恶意攻击(如数据篡改)对控制系统的威胁。

xiaoheshang_123的博客 169

云计算实验3 基于Scala编程语言的Spark数据预处理实验

本次实验主要使用了Scala语言进行基本的操作,基本熟悉Scala的基本语法、数据类型以及函数的使用,在spark-shell下完成RDD的基本操作,根据实际业务需求使用spark 完成对Apache格式的日志内容的分析,了解了自定义日志过滤函数、日志预处理、日志的相关指标等操作。

Sunny不要停的博客 2791

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Scala编程指南(快速入门)

概述 Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起。传统业务开发, 领域模型设计(面向对象开发); 大数据开发 - 数据集计算模型-(函数式编程)。函数编程强调的是程序对数据的运行算能力。在面向对象计算数据的时候采取代码不动移动数据.在函数式编程计算的时候数据不动代码动。Scala是一门多范式的编程语言,同时支持面向对象和面向函数编程风格。它以一种优雅的方式解决现实问题。虽然它是强静态类型的编程语言,但是它强大的类型推断能力,使其看起来就像是一个动态编程语言一样。Scala语言最终会被翻译

z1987865446的博客 1417

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Scala 基础编程

Scala 基础编程 Scala概述 Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起。 传统业务开发- 领域模型设计(面向对象开发);大数据开发 - 数据集计算模型-(函数式编程)。函数编程强调的是程序对数据的运算能力。在面向对象计算数据的时候采取代码不动,移动数据。在函数式编程计算的时候数据不动代码动。 Scala是⼀门多范式的编程语言,同时支持面向对象和面向函数编程风格。它以一...

xiao_qiqiqi的博客 899

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spark大数据分析与实战课后答案

Spark大数据分析实战课后答案

BIPT919的博客 2万+

RDD编程初级实践大作业

1、 需求描述 本次实验需要使用Spark的RDD基本操作及键值对操作解决以下问题: 一、分析某大学计算机系的成绩数据集data.txt(该数据每行包括:姓名,科目,成绩 三项数据 某项数据以“,”隔开)并解决以下问题: (1)该系总共有多少学生; (2)该系共开设了多少门课程; (3)Tom同学的总成绩平均分是多少; (4)求每名同学的选修的课程门数; (5)该系DataBase课程共有多少人选修; (6)各门课程的平均分是多少; (7)使用累加器计算共有多少人选了DataBase这门课。 二、对于两个

NewManWatch的博客 3742

Scala的概念和安装

Scala是一门多范式的编程语言,同时支持面向对象和面向函数式编程风格。虽然它是强静态类型的编程语言,但是他强大的类型推断能力,使其看起来像一个动态编程语言一样。Scala语言最终会被翻译成java字节码文件,可以无缝和JVM集成,并且可以使用Scala调用Java的代码库。除了Scala编程语言自身的特性以外,目前比较流行的Spark计算框架也是使用Scala语言编写。Spark 和 Scala...

origin_cx的博客 187

Spark RDD基本操作

Spark RDD Scala语言编程RDD(Resilient Distributed Dataset)是一个不可变的分布式对象集合, 每个rdd被分为多个分区, 这些分区运行在集群的不同节点上。rdd支持两种类型的操作:转化(trainsformation)和行动(action), Spark只会惰性计算rdd, 也就是说, 转化操作的rdd不会立即计算, 而是在其第一次遇到行动操作时才去计算,

wusuopuBUPT的专栏 5184

Spark-3.5.7文档2 - RDD 编程指南

从高层次来看,每个 Spark 应用程序都包含一个驱动程序,该程序运行用户的主函数并在集群上执行各种并行操作。Spark 提供的核心抽象是弹性分布式数据集(RDD),即一种分布在集群节点间的元素集合,可被并行操作。RDD 可通过以下方式创建:从 Hadoop 文件系统(或任何其他 Hadoop 支持的文件系统)中的文件起步,或基于驱动程序中的现有 Scala 集合进行转换生成。用户也可要求 Spark 将 RDD 持久化到内存中,使其能在并行操作间高效复用。最后,RDD 能自动从节点故障中恢复。

Chdaring的博客 895

Scala 和 Spark 大数据分析(一)

原文:zh.annas-archive.org/md5/39EECC62E023387EE8C22CA10D1A221A 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 数据持续增长,加上对这些数据进行越来越复杂的决策的需求,正在创造巨大的障碍,阻止组织利用传统的分析方法及时获取洞察力。大数据领域与这些框架密切相关,其范围由这些框架能处理的内容来定义。无论您是在审查数百万访问者的点击流以优化在线广告位置,还是在筛选数十亿交易以识别欺诈迹象,对于从海量数据中自动获取洞察力的高级分析(如机器学习和图

龙哥盟 1696
上一篇: 大数据(7k)比较Scala、Java、SQL、Python的case模式匹配
下一篇: 大数据(8g)图解共享变量:累加器 and 广播变量
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值