spark总结

1:创建数组

#第1种方式
var arr: Array[String] = new Array[String](num)
#第2种方式
var arr:Array[String] = Array(元素1,元素2,...)

2:数组的方法

lengt 返回数组的长度
 head 查看数组的第一个元素
 tail 查看数组中除了第一个元素外的其他元素
 isEmpty 判断数组是否为空
 contains(x) 判断数组是否包含元素x

用法

#查看数组z的长度
 z.length
#查看数组z的第一个元素
 z.head
#查看数组z中除了第一个元素外的其他元素
 z.tai
#判断数组z是否为空
 z.isEmpty
#判断数组z是否包含元素"baidu"
 z.contains("baidu")

3:数组的连接

#通过操作符“++”连接数和
val arr1 = Array(1, 2, 3)
val arr2= Array(4, 5, 6)
val arr3 = arr1 ++ arr2
#通过concat()方法连接数组
import Array._
val arr4 = concat(arrl, arr2)

4:if语句

1:if...

2:if...else...

3: if...elif...else...

4:

if...

        if...else

else...

5:if判断

if判断
1f(布尔表达式)(若布尔表达式为true,则执行该语句块4语句
12(布尔表达式)(若布尔表达式为trus,则执行该语句块)1f.le句
 lse|若布尔表达式为fa)se,则执行该语句块)
 iCelse it else语句布尔表达式1:1
若布尔表达式1为1rue,则执行该语句块
)eise tf布尔表达式211
若布尔表达式2为true,则执行该语句块
)else it(布尔表达式3)(
若布东表达式3为zr0,则执行该语句块
} else i
若以上市尔表达式都为false,则执行该语句块
 if.else套语句
 f(布尔表达式1)ft布尔表达式2;(
若布尔表达式2为true,则执行该语句块}e_se if(布尔表达式3)|
若布尔表达式3为true,则执行该语句块
)else{
若布尔表达式2为falae且布尔表达式3为fal
else(
    以上false则执行该语句块

6for循环

var i,j= 0;
for(i <-1 to 2){
    for(j<- 1 to 2)
        println("("+i+","+j+")")
}

7:定义列表

定义string类型的列
 val fruit: List[String] = List("apple", "pears", "oranges")
#定义Int类型的列表
 val nums: List[Int]= List(1, 2, 3, 4, 5)
#定义Double类型的列表
 val double_nums: List[Double] = List(1.0, 2.5, 3.3)
#定义Nothing类型的列表
 val empty: List[Nothing] = List()
#根据初值自动推断列表的数据类型
val fruit2 = List("apple", "pears", "oranges")

8,定义与使用集合

def head: A
获取集合的第一个元素
 def init: Set[A]
返回所有元素,除了最后一个
 def last:A
获取集合的最后一个元素
 def tail: Set[A]
返回所有元素,除了第一个
 def+(elems: A): Set[A]
合并两个集合
 def take(n: Int): List[A]
获取列表前n个元素
 def contains(elem: Any): Boolean
判断集合中是否包含指定元素

9,映射

映射(Map)是一种可迭代的键值对结构,所有值都可以通过键获取,并且映射中键都是唯一的,定义如图2-31所示。
 scala> val person: Map[String, Int]=Map("John"->21,"Betty"->20,"Mike"->22)person: Map[String, Int] = Map(John .> 21, Betty -> 20, Mike .> 22)

10元组

元组(Tuple)是一种类似于列表的结构,但与列表不同的是,元组可以包含不同类的元素。元组的值是通过将单个的值包含在圆括号中构成的。

11,函数组合器

map

foreach

filter

fatten

flatmap

groupBy

12Scala定义类

class Point(xc: Int, yc: Int){
    var x: Int= xc var y: Int = yc
    def move(dx: Int, dy: Int){
        x=x+dx 
        y=y -dy
        println("x轴的坐标为:"+x)
        printIn("y轴的坐标为:"+y)
    }
}

13Scala读写文件

写文件

import java.io._
 val pw = new PrintWriter(new File("/opt/test.txt"))

pw.printIn(I am learning Scalay
#也可以使用write()方法写入数据,pw.write("IamlearningScala")
 pw.close

import scala.io.source
source. fromFile("/opt/test.txt").foreach(print)

14创建RDD

1:parallelize()

定义一个数
 val data = Array(1, 2, 3, 4, 5)
#使用parallelize()方法创建RDD 
val distData = sc. parallelize(data)
#查看RDD默认分区个数
 distData.partitions.size
#设置分区个数为4后创建RDD
 val distData = sc.parallelize(data, 4)
#再次查看RDD分区个数
distData.partitions.size

2:make()

定义一个序列seq
valseq-Seq((1,Seq("iteblog.com","sparkhosil.com")),
(3,Seq("itebolg.com","sparkhost2.com";I,
(2,Scq("itebloq.com","sparkhost3.com")))
#使用makeRDD()方法创建RDD val iteblog - sc.makeRDD(seq)
查看RDD的值
iteblog.collect
#查看分区个数
iteblog.partitioner iteblog.partitions.size
#根据位置信息查看每一个分区的值
iteblog.preferredlocations(iteblog.partitions(0))
iteblog.preferredLocations(iteblog.partitions(1))
iteblog.preferredLocations(iteblog.partitions(2))

3:外部创建RDD

HDFS

Linux

14map()方法的使用

#创建RD
 val distData = sc.parallelize(List(1, 3, 45, 3, 76))

#map()方法求平方值
val sq_dist = distData. map(x =>x* x)

15sortBY()方法

创建RDD
 val data = sc. parallelize(List((1, 3), (45, 3), (7, 6)))

#使用sortBy()方法对元组的第二个值进行降序排序,分区个数设置为1

val sort_data = data.sortBy(x=> x._2, false, 1)

16:collect()方法

#查看sq_dist 和 sort_data的结果

sq_dist.collect
sort_data.collect

17flatMap()方法

#创建RDD
 val test = sc.parallelize(List("How are you", "I am fine", "What about you"ll
查看RDD
 test.collect
#使用map分割字符串后,再查看RDD

test.map(x=>x.split("")).collect

#使用flatMap分割字符串后,再查看RDD

test.flatMap(x=>x.split("")).collect

18take()方法

创建RD
 val data = sc.parallelize(1 to 10)
获取RDD的前5个元素
data.take(5)

19,union()方法

#创建RDD
 val rddl = sc.parallelize(List(('a', 1), ('b', 2),('c', 3))

val rdd2 = sc.parallelize(List(('a', 1),('d', 4), ('e', 5))

#通过union()方法合并两个RDD

rddl.union(rdd2).collect

20,fillter()方法

#创建RDD
 val rddl-sc.parallelize(List(('a,11.1b.2),(c',3)))

#通过filter()方法过滤其中每个元组第二个值小于等于1的元素

rddl.filter(_._2>1).collect

rdd1.filter(x=>x._2>1).collect

21,distinct()方法

创建RDD
 val rdd = sc.makeRDD(List('a', 1), ('a', 1), ('b', 1), ('c', 1))

使用distinct()方法对RDD进行去重

rdd.distinct().collect

22,创建键值对RDD

创建普通RD
 val rdd asc.parallelizef
        List("this is a test", "how are you", "I am fine", "can you tell me"))
建立键值对RDD
 val words = rdd.map(x=> (x.split("")(0), x))
查看键值对RDD数据
words.collect

23,键值对方法

kes,values

reduceByKey

24

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值