spark RDD 函数API指南

【spark原理系列】 dataset api比rdd好在哪里? 相对于RDD,DataFrame提供了更加用户友好的API。DataFrame带来的诸多好处包括: Spark数据源、SQL/DataFrame查询、Tungsten和Catalyst优化以及跨语言的统一API。还有基于DataFrame的MLlib API为机器学习算法和多种语言提供了统一的API。DataFrame便于构建实际的机器学习管道,尤其是特征转换。 阅读详情

2.2 RDD:计算 transform->action

  • 2.2.1 aggregate
x = sc.parallelize([2,3,4], 2)[Task不能跨分片,task数为2]
neutral_zero_value = (0,1) # sum: x+0 = x, product: 1*x = x
seqOp = (lambda aggregated, el: (aggregated[0] + el, aggregated[1] * el)) 
combOp = (lambda aggregated, el: (aggregated[0] + el[0], aggregated[1] * el[1]))
y = x.aggregate(neutral_zero_value,seqOp,combOp)[seqOp:各分片聚合计算
combOp:聚合各个分片
neutral_zero_value:初始化设定值,都要参与计算]  # computes (cumulative sum, cumulative product)
print(x.collect())
print(y)
 
[2, 3, 4]
(9, 24)
  • 2.2.2 aggregateByKey
x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)])
zeroValue = [] # empty list is 'zero value' for append operation
mergeVal = (lambda aggregated, el: aggregated + [(el,el**2)])
mergeComb = (lambda agg1,agg2: agg1 + agg2 )
y = x.aggregateByKey(zeroValue,mergeVal,mergeComb)
print(x.collect())
print(y.collect())
 
[('B', 1), ('B', 2), ('A', 3), ('A', 4), ('A', 5)]
[('A', [(3, 9), (4, 16), (5, 25)]), ('B', [(1, 1), (2, 4)])]
  • 2.2.3 cache(persistent)

  • 2.2.4 cartesian(笛卡儿积)

# cartesian
x = sc.parallelize(['A','B'])
y = sc.parallelize(['C','D'])
z = x.cartesian(y)
print(x.collect())
print(y.collect())
print(z.collect())
 
['A', 'B']
['C', 'D']
[('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D')]
  • 2.2.5 checkpoint
  • 2.2.6 coalesce(合并分片)
# coalesce
x = sc.parallelize([1,2,3,4,5],2)
y = x.coalesce(numPartitions=1)
print(x.glom().collect())
print(y.glom().collect())
 
[[1, 2], [3, 4, 5]]
[[1, 2, 3, 4, 5]]
  • 2.2.7 cogroup(按rdd分组)
# cogroup
x = sc.parallelize([('C',4),('B',(3,3)),('A',2),('A',(1,1))])
y = sc.parallelize([('A',8),('B',7),('A',6),('D',(5,5))])
z = x.cogroup(y)
print(x.collect())
print(y.collect())
for key,val in list(z.collect()):
    print(key, [list(i) for i in val])
 
[('C', 4), ('B', (3, 3)), ('A', 2), ('A', (1, 1))]
[('A', 8), ('B', 7), ('A', 6), ('D', (5, 5))]
A [[2, (1, 1)], [8, 6]]
C [[4], []]
B [[(3, 3)], [7]]
D [[], [(5, 5)]]
  • 2.2.8 combineByKey
# combineByKey
x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)])
createCombiner = (lambda el: [(el,el**2)]) 
mergeVal = (lambda aggregated, el: aggregated + [(el,el**2)]) # append to aggregated
mergeComb = (lambda agg1,agg2: agg1 + agg2 )  # append agg1 with agg2
y = x.combineByKey(createCombiner,mergeVal,mergeComb)
print(x.collect())
print(y.collect())
 
[('B', 1), ('B', 2), ('A', 3), ('A', 4), ('A', 5)]
[('A', [(3, 9), (4, 16), (5, 25)]), ('B', [(1, 1), (2, 4)])]
  • 2.2.9 context
  • 2.2.10 countByKey
  • 2.2.11 countByValue
  • 2.2.12 distinct
  • 2.2.13 filter
# filter
x = sc.parallelize([1,2,3])
y = x.filter(lambda x: x%2 == 1)  # filters out even elements
print(x.collect())
print(y.collect())
 
[1, 2, 3]
[1, 3]
2.2.14 first
备注:Return the first element of this rdd
  • 2.2.15 flatMap(降维)
# flatMap
x = sc.parallelize([1,2,3])
y = x.flatMap(lambda x: (x, 100*x, x**2))
print(x.collect())
print(y.collect())
 
[1, 2, 3]
[1, 100, 1, 2, 200, 4, 3, 300, 9]
  • 2.2.16 flatMapValues
x = sc.parallelize([("a", ["x", "y", "z"]), ("b", ["p", "r"])])
 def f(x): return x
 x.flatMapValues(f).collect()
[('a', 'x'), ('a', 'y'), ('a', 'z'), ('b', 'p'), ('b', 'r')]
  • 2.2.17 fold
# fold
x = sc.parallelize([1,2,3])
neutral_zero_value = 0  # 0 for sum, 1 for multiplication
y = x.fold(neutral_zero_value,lambda obj, accumulated: accumulated + obj) # computes cumulative sum
print(x.collect())
print(y)
 
[1, 2, 3]
6
  • 2.2.18 foldByKey
>>> rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 1)])
>>> from operator import add[python标准库:常用运算函数库]
>>> sorted(rdd.foldByKey(0, add).collect())
[('a', 2), ('b', 1)]
  • 2.2.19 foreach
>>> def f(x): print(x)
>>> sc.parallelize([1, 2, 3, 4, 5]).foreach(f)[循环rdd的所有元素,无返回值]
  • 2.2.20 foreachPartition [循环rdd的分片]
# foreachPartition
from __future__ import print_function
x = sc.parallelize([1,2,3],5)
def f(parition):
    '''side effect: append the current RDD partition contents to a file'''
    f1=open("./foreachPartitionExample.txt", 'a+') 
    print([el for el in parition],file=f1)
 
# first clear the file contents
open('./foreachPartitionExample.txt', 'w').close()  
 
y = x.foreachPartition(f) # writes into foreachExample.txt
 
print(x.glom().collect())
print(y)  # foreach returns 'None'
# print the contents of foreachExample.txt
with open("./foreachPartitionExample.txt", "r") as foreachExample:
    print (foreachExample.read())
 
[[], [1], [], [2], [3]]
None
[]
[]
[1]
[2]
[3]
  • 2.2.21 fullOuterJoin

    备注:Perform a right outer join of self and other.

  • 2.2.22 glom()[合并rdd的分片的所有元素]

  • 2.2.23 groupby

# groupBy
x = sc.parallelize([1,2,3])
y = x.groupBy(lambda x: 'A' if (x%2 == 1) else 'B' )
print(x.collect())
# y is nested, this iterates through it
print([(j[0],[i for i in j[1]]) for j in y.collect()]) 
 
[1, 2, 3]
[('A', [1, 3]), ('B', [2])]
  • 2.2.24 groupbykey
# groupByKey
x = sc.parallelize([('B',5),('B',4),('A',3),('A',2),('A',1)])
y = x.groupByKey()
print(x.collect())
print([(j[0],[i for i in j[1]]) for j in y.collect()])
 
[('B', 5), ('B', 4), ('A', 3), ('A', 2), ('A', 1)]
[('A', [3, 2, 1]), ('B', [5, 4])]
  • 2.2.25 groupwith(Alias for cogroup)
# groupWith
x = sc.parallelize([('C',4),('B',(3,3)),('A',2),('A',(1,1))])
y = sc.parallelize([('B',(7,7)),('A',6),('D',(5,5))])
z = sc.parallelize([('D',9),('B',(8,8))])
a = x.groupWith(y,z)
print(x.collect())
print(y.collect())
print(z.collect())
print("Result:")
for key,val in list(a.collect()): 
    print(key, [list(i) for i in val])
 
[('C', 4), ('B', (3, 3)), ('A', 2), ('A', (1, 1))]
[('B', (7, 7)), ('A', 6), ('D', (5, 5))]
[('D', 9), ('B', (8, 8))]
Result:
D [[], [(5, 5)], [9]]
C [[4], [], []]
B [[(3, 3)], [(7, 7)], [(8, 8)]]
A [[2, (1, 1)], [6], []]
  • 2.2.26 histogram
rdd = sc.parallelize(range(51))
 rdd.histogram(2)
([0, 25, 50], [25, 26])
rdd.histogram([0, 5, 25, 50])
([0, 5, 25, 50], [5, 20, 26])[分组区间,每区间元素个数]
rdd.histogram([0, 15, 30, 45, 60])  # evenly spaced buckets
([0, 15, 30, 45, 60], [15, 15, 15, 6])
rdd = sc.parallelize(["ab", "ac", "b", "bd", "ef"])
 rdd.histogram(("a", "b", "c"))
(('a', 'b', 'c'), [2, 2])
  • 2.2.27 join
# join
 x = sc.parallelize([('C',4),('B',3),('A',2),('A',1)])
  y = sc.parallelize([('A',8),('B',7),('A',6),('D',5)]) z = x.join(y)
   print(x.collect())
    print(y.collect())
    print(z.collect())
    [('C', 4), ('B', 3), ('A', 2), ('A', 1)]
    [('A', 8), ('B', 7), ('A', 6), ('D', 5)]
     [('A', (2, 8)), ('A', (2, 6)), ('A', (1, 8)), ('A', (1, 6)), ('B', (3, 7))]
  • 2.2.28 leftoutjoin
# leftOuterJoin
x = sc.parallelize([('C',4),('B',3),('A',2),('A',1)])
y = sc.parallelize([('A',8),('B',7),('A',6),('D',5)])
z = x.leftOuterJoin(y)
print(x.collect())
print(y.collect())
print(z.collect())
 
[('C', 4), ('B', 3), ('A', 2), ('A', 1)]
[('A', 8), ('B', 7), ('A', 6), ('D', 5)]
[('A', (2, 8)), ('A', (2, 6)), ('A', (1, 8)), ('A', (1, 6)), ('C', (4, None)), ('B', (3, 7))]
  • 2.2.29 rightoutjoin
# rightOuterJoin
x = sc.parallelize([('C',4),('B',3),('A',2),('A',1)])
y = sc.parallelize([('A',8),('B',7),('A',6),('D',5)])
z = x.rightOuterJoin(y)
print(x.collect())
print(y.collect())
print(z.collect())
 
[('C', 4), ('B', 3), ('A', 2), ('A', 1)]
[('A', 8), ('B', 7), ('A', 6), ('D', 5)]
[('A', (2, 8)), ('A', (2, 6)), ('A', (1, 8)), ('A', (1, 6)), ('B', (3, 7)), ('D', (None, 5))]
  • 2.2.30 keyby
# keyBy
x = sc.parallelize([1,2,3])
y = x.keyBy(lambda x: x**2)
print(x.collect())
print(y.collect())
 
[1, 2, 3]
[(1, 1), (4, 2), (9, 3)]
2.2.31 lookup(key)
  • 2.2.32 mapPartitions
# mapPartitions
x = sc.parallelize([1,2,3], 2)
def f(iterator): yield sum(iterator)
y = x.mapPartitions(f)
# glom() flattens elements on the same partition
print(x.glom().collect())  
print(y.glom().collect())
 
[[1], [2, 3]]
[[1], [5]]
  • 2.2.33 mapPartitionsWithIndex
# mapPartitionsWithIndex
x = sc.parallelize([1,2,3], 2)
def f(partitionIndex, iterator): yield (partitionIndex,sum(iterator))
y = x.mapPartitionsWithIndex(f)
 
# glom() flattens elements on the same partition
print(x.glom().collect())  
print(y.glom().collect())
 
[[1], [2, 3]]
[[(0, 1)], [(1, 5)]]
  • 2.2.34 map、max、min、mean、name
  • 2.2.35 mapValues
>>> x = sc.parallelize([("a", ["apple", "banana", "lemon"]), ("b", ["grapes"])])
>>> def f(x): return len(x)
>>> x.mapValues(f).collect()
[('a', 3), ('b', 1)]
  • 2.2.36 partitionby
# partitionBy
x = sc.parallelize([(0,1),(1,2),(2,3)],2)
y = x.partitionBy(numPartitions = 3, partitionFunc = lambda x: x)
# only key is passed to paritionFunc
print(x.glom().collect())
print(y.glom().collect())
 
[[(0, 1)], [(1, 2), (2, 3)]]
[[(0, 1)], [(1, 2)], [(2, 3)]]
  • 2.2.37 persist
 # rdd持久化,降低内存消耗
reqrdd.persist(storageLevel=StorageLevel.MEMORY_AND_DISK_SER)
Cache:
Persist this RDD with the default storage level (MEMORY_ONLY).
  • 2.2.38 pipe
# pipe
x = sc.parallelize(['A', 'Ba', 'C', 'AD'])
y = x.pipe('grep -i "A"') # calls out to grep, may fail under Windows 
print(x.collect())
print(y.collect())
['A', 'Ba', 'C', 'AD']
['A', 'Ba', 'AD']
  • 2.2.40 randomSplit
  • 2.2.41 reduce
# reduce
x = sc.parallelize([1,2,3])
y = x.reduce(lambda obj, accumulated: obj + accumulated)  # computes a cumulative sum
print(x.collect())
print(y)
 
[1, 2, 3]
6
  • 2.2.42 reducebykey
# reduceByKey
x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)])
y = x.reduceByKey(lambda agg, obj: agg + obj)
print(x.collect())
print(y.collect())
 
[('B', 1), ('B', 2), ('A', 3), ('A', 4), ('A', 5)]
[('A', 12), ('B', 3)]
  • 2.2.43 reduceByKeyLocally
# reduceByKeyLocally
x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)])
y = x.reduceByKeyLocally(lambda agg, obj: agg + obj)
print(x.collect())
print(y)
 
[('B', 1), ('B', 2), ('A', 3), ('A', 4), ('A', 5)]
{'A': 12, 'B': 3}
备注:This will also perform the merging locally on each mapper before sending results to a reducer, similarly to a “combiner” in  MapReduce.
  • 2.2.44 repartition
# repartition
x = sc.parallelize([1,2,3,4,5],2)
y = x.repartition(numPartitions=3)
print(x.glom().collect())
print(y.glom().collect())
[[1, 2], [3, 4, 5]]
[[], [1, 2, 3, 4], [5]]
  • 2.2.45 repartitionAndSortWithinPartitions
rdd = sc.parallelize([(0, 5), (3, 8), (2, 6), (0, 8), (3, 8), (1, 3)])
rdd2 = rdd.repartitionAndSortWithinPartitions(2, lambda x: x % 2, True)
rdd2.glom().collect()
[[(0, 5), (0, 8), (2, 6)], [(1, 3), (3, 8), (3, 8)]]
  • 2.2.46 smaple
# sample
x = sc.parallelize(range(7))
# call 'sample' 5 times
ylist = [x.sample(withReplacement=False, fraction=0.5) for i in range(5)] 
print('x = ' + str(x.collect()))
for cnt,y in zip(range(len(ylist)), ylist):
    print('sample:' + str(cnt) + ' y = ' +  str(y.collect()))
 
x = [0, 1, 2, 3, 4, 5, 6]
sample:0 y = [0, 2, 5, 6]
sample:1 y = [2, 6]
sample:2 y = [0, 4, 5, 6]
sample:3 y = [0, 2, 6]
sample:4 y = [0, 3, 4]
  • 2.2.47 sampleByKey
# sampleByKey
x = sc.parallelize([('A',1),('B',2),('C',3),('B',4),('A',5)])
y = x.sampleByKey(withReplacement=False, fractions={'A':0.5, 'B':1, 'C':0.2})
print(x.collect())
print(y.collect())
 
[('A', 1), ('B', 2), ('C', 3), ('B', 4), ('A', 5)]
[('B', 2), ('C', 3), ('B', 4)]
  • 2.2.48 sampleStdev
# sampleStdev
x = sc.parallelize([1,3,2])
y = x.sampleStdev() # divides by N-1
print(x.collect())
print(y)
[1, 3, 2]
1.0
  • 2.2.49 sampleVariance
# sampleVariance
x = sc.parallelize([1,3,2])
y = x.sampleVariance()  # divides by N-1
print(x.collect())
print(y)
[1, 3, 2]
1.0
  • 2.2.50 sortByKey
# sortByKey
x = sc.parallelize([('B',1),('A',2),('C',3)])
y = x.sortByKey()
print(x.collect())
print(y.collect())
 
[('B', 1), ('A', 2), ('C', 3)]
[('A', 2), ('B', 1), ('C', 3)]
  • 2.2.51 sortBy
tmp = [('a', 1), ('b', 2), ('1', 3), ('d', 4), ('2', 5)]
sc.parallelize(tmp).sortBy(lambda x: x[0]).collect()
[('1', 3), ('2', 5), ('a', 1), ('b', 2), ('d', 4)]
sc.parallelize(tmp).sortBy(lambda x: x[1]).collect()
[('a', 1), ('b', 2), ('1', 3), ('d', 4), ('2', 5)]
  • 2.2.52 stats、stdev、sum
  • 2.2.53 subtract
x = sc.parallelize([("a", 1), ("b", 4), ("b", 5), ("a", 3)])
y = sc.parallelize([("a", 3), ("c", None)])
sorted(x.subtract(y).collect())
[('a', 1), ('b', 4), ('b', 5)]
2.2.54 subtractByKey
x = sc.parallelize([("a", 1), ("b", 4), ("b", 5), ("a", 2)])
y = sc.parallelize([("a", 3), ("c", None)])
sorted(x.subtractByKey(y).collect())
[('b', 4), ('b', 5)]
  • 2.2.55 take
# take
x = sc.parallelize([1,3,1,2,3])
y = x.take(num = 3)
print(x.collect())
print(y)
 
[1, 3, 1, 2, 3]
[1, 3, 1]
  • 2.2.56 takeOrder
# takeOrdered
x = sc.parallelize([1,3,1,2,3])
y = x.takeOrdered(num = 3)
print(x.collect())
print(y)
 
[1, 3, 1, 2, 3]
[1, 1, 2]
  • 2.2.57 takeSample
# takeSample
x = sc.parallelize(range(7))
# call 'sample' 5 times
ylist = [x.takeSample(withReplacement=False, num=3) for i in range(5)]  
print('x = ' + str(x.collect()))
for cnt,y in zip(range(len(ylist)), ylist):
    print('sample:' + str(cnt) + ' y = ' +  str(y))  # no collect on y
 
x = [0, 1, 2, 3, 4, 5, 6]
sample:0 y = [0, 2, 6]
sample:1 y = [6, 4, 2]
sample:2 y = [2, 0, 4]
sample:3 y = [5, 4, 1]
sample:4 y = [3, 1, 4]
  • 2.2.58 treeAggregate
 add = lambda x, y: x + y
 rdd = sc.parallelize([-5, -4, -3, -2, -1, 1, 2, 3, 4], 10)
 rdd.treeAggregate(0, add, add)
-5
 rdd.treeAggregate(0, add, add, 1)
-5
 rdd.treeAggregate(0, add, add, 2)
-5
 rdd.treeAggregate(0, add, add, 5)
-5
 rdd.treeAggregate(0, add, add, 10)
-5
  • 2.2.59 treeReduce
add = lambda x, y: x + y
 rdd = sc.parallelize([-5, -4, -3, -2, -1, 1, 2, 3, 4], 10)
 rdd.treeReduce(add)
-5
 rdd.treeReduce(add, 1)
-5
 rdd.treeReduce(add, 2)
-5
 rdd.treeReduce(add, 5)
-5
 rdd.treeReduce(add, 10)
-5
  • 2.2.60 uion、unpersist、values、variance
  • 2.2.61 zip
# zip
x = sc.parallelize(['B','A','A'])
# zip expects x and y to have same #partitions and #elements/partition
y = x.map(lambda x: ord(x))  
z = x.zip(y)
print(x.collect())
print(y.collect())
print(z.collect())
 
['B', 'A', 'A']
[66, 65, 65]
[('B', 66), ('A', 65), ('A', 65)]
  • 2.2.62 zipWithIndex
# zipWithIndex
x = sc.parallelize(['B','A','A'],2)
y = x.zipWithIndex()
print(x.glom().collect())
print(y.collect())
 
[['B'], ['A', 'A']]
[('B', 0), ('A', 1), ('A', 2)]
  • 2.2.63 zipWithUniqueId
# zipWithUniqueId
x = sc.parallelize(['B','A','A'],2)
y = x.zipWithUniqueId()
print(x.glom().collect())
print(y.collect())
 
[['B'], ['A', 'A']]
[('B', 0), ('A', 1), ('A', 3)]
Spark 十大常用的 RDD API (适合小白) 0. RDD是什么?RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD。从编程的角度来看,RDD可以简单看成是一个数组。和普通数组的区别是,RDD中的数据是分区存储的,这样不同分区的数据就可以分布在不同的机器上,同时可以被并行处理。因此,Spark应用程序所做的无非是把需要处理的数据转换为RDD,然后对RDD进行一系列的变换和操作从而得到结果。1.创建RDD(主要使用以下 阅读详情

相关推荐

【实践】Spark RDD API实战

map //3表示指定为3个Partitions var a = sc.parallelize(List("dog", "salmon", "salmon", "rat", "elephant"), 3) //以a各元素的长度建议新的RDD var b = a.map(_.length) //将两个RDD组合新一个新的RDD var c = a.zip(b) c.collect res0: A

一寒惊鸿 1万+

使用spark实现max/min/topN等经典mapreduce问题

问题导读: 使用spark如何实现最大值最小值问题? 使用spark如何实现平均值问题? 使用spark如何实现topN问题? 摘要 Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在...

学海无涯的博客 2839

深入理解Spark RDD——RDD实现的初次分析

RDD(Resilient Distributed Datasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合。对于Spark的初学者来说,这个概念会十分陌生。即便是对于一些有Spark使用经验的人,要想说清楚什么是RDD,以及为什么需要RDD还是一件比较困难的事情。在《深入理解Spark RDD——为什么需要RDD?》一文解释了第二个问题,本文将开启对第一个问题的解答。 有些读者可...

beliefer的博客 2006

【spark】十 DataFrame min、max、sum必须要用到is not anaggregate function错误,怎么处理

DataFrame.select(min(substring(col("A"),2,8)),max(substring(col("A"),2,8)),sum(col("B"))) 报错提示需要aggregate by信息 是我用错了,不能使用col("A")来取A列的值再substring, 应该直接用substring("A",2,8) 取a列的第二个字符起的八位字符,取最大值、最小值做时间...

百物易用是苏生 6404

【SWPUCTF 2021 新生赛】hardrce

对每个字符的ASCII值进行按位取反操作(这种要进行自增马进行绕过。

XiaoHei的博客 460

用友U8接口开发全攻略:从EAI到OpenAPI的5种方式详解(附避坑指南)

本文深度解析了用友U8系统接口开发的五种核心方式:EAI、API、OpenAPI、SQL直连与内部CO组件。文章详细对比了各方式的适用场景、优缺点及实战操作,并提供了清晰的选型决策框架与避坑指南,帮助开发者根据具体业务需求选择最高效、最稳定的集成路径。

weixin_29322855的博客 684

RDD api整理

RDD[T] Transformations rdd api 备注 persist/cache map(f: T => U) keyBy(f: T => K) 特殊的map,提key flatMap(f: T => Iterable[U]) map的一种,类似UDT...

weixin_33941350的博客 233

CST新手必看:共面波导色散曲线绘制全流程(附参数设置详解)

本文为CST新手提供了绘制共面波导色散曲线的完整流程与参数设置详解。从模型搭建、周期性边界条件设置,到本征模求解器配置和参数扫描技巧,逐步解析关键步骤,并分享后处理与结果验证方法,帮助用户高效完成仿真任务。

j0k1l2m3n的博客 422

[导入]RDDTools中文手册,简易入门

作者: ecsun 链接:http://papalong.javaeye.com/blog/285820 发表时间: 2008年12月03日 声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追...

weixin_34146805的博客 332

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 406

手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战)

本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。

weixin_29159995的博客 193

Spark Python API函数:pyspark API(1)

文章目录 •    1 pyspark version •    2 map •    3 flatMap •    4 mapPartitions •    5 mapPartitionsWithIndex •    6 getNumPartitions •    7 filter •    8 distinct •    9 sample •    10 takeSample •    11...

风中一叶 1185

基于AutoDL复现A-LOAM

Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6。在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。用MobaXterm解决该问题!搜到的一个解决方式:该问题属于ceres版本问题,将A-LOAM下的。

m0_61281610的博客 1942

[Spark经验一]Spark RDD计算使用的函数里尽量不要使用全局变量

比如RDD里的计算调用了别的组件类里的方法(比如hbase里的put方法),那么序列化时,会将该方法所属的对象的所有变量都序列化的,可能有些根本没有实现序列化导致直接报错。也就是spark的api没有做到用户无感知,在使用一些全局方法时还需自己控制。简单点,能定义在计算函数内的方法就定义在里面。

数据之路 7874

Xilinx Chip2Chip IP核实战:Aurora PHY通信配置与仿真避坑指南

本文深入解析Xilinx Chip2Chip IP核与Aurora PHY的通信配置与仿真优化,提供实战避坑指南。通过AXI协议转换桥实现FPGA间高速数据传输,详细讲解Aurora PHY参数设置、仿真加速技巧及常见问题解决方案,帮助工程师快速部署稳定高效的芯片间通信系统。

g5h6i7j的博客 1006

Cadence PCB 仿真宝典【目录】

欢迎大家来到《Cadence PCB 仿真宝典》该专栏包括【入门篇】【提升篇】【技巧篇】【疑难篇】四个部分,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 3269

机器学习库(MLlib)指南(Spark 2.4.5)

MLlib是Spark的机器学习(ML)库。它的目标是使机器学习的实际应用变得容易和可扩展。在较高层次上,它提供了以下工具: ML算法:常见的学习算法,如分类、回归、聚类和协作过滤 特征化:特征提取、转换、降维和筛选 工作流(Pipelines):构建、评估和调整ML工作流的工具 持久性:保存和加载算法、模型和工作流 实用程序:线性代数、统计学、数据处理等。 注:基于DataFrame的...

人month神话 1106

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

理解Spark RDD中的aggregate函数

针对Spark的RDD,API中有一个aggregate函数,本人理解起来费了很大劲,明白之后,mark一下,供以后参考。 首先,Spark文档中aggregate函数定义如下 def aggregate[U](zeroValue: U)(seqOp: (U, T) ⇒ U, combOp: (U, U) ⇒ U)(implicit arg0: ClassTag[U]): U

qingyang0320的专栏 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spark RDD详解

1.Spark 介绍: spark出现的主要原因 多个 MapReduce 任务之间没有基于内存的数据共享方式, 只能通过磁盘来进行共享。这种方式明显比较低效。 在 Spark 中, 计算不涉及与其他节点进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。 1.1 Spark核心组件 spark的核心是Spark Core,其中上面的Spark Sql对接的是Hive等结构化查询,Spark Streaming是对接的流式计算,后面的那两个也是主要用在科

resemble的博客 5971

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【spark】RDD-API

一、创建RDD 1.由外部存储系统的数据集创建,由外部存储系统的数据集创建,包括本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、Cassandra、HBase等 val rdd1 = sc.textFile("hdfs://node01:8020/wordcount/input/words.txt") 2.通过已有的RDD经过算子转换生成新的RDD val rdd2=rdd...

依旧的博客 3959

Spark RDD与Partion

一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 ...

Deegue 1万+

史上最全Spark高级RDD函数操作

前言          本篇文章主要介绍高级RDD操作,重点介绍键值RDD,这是操作数据的一种强大的抽象形式。我们还涉及一些更高级的主题,如自定义分区,这是你可能最想要使用RDD的原因。使用自定义分区函数,你可以精确控制数据在集群上的分布,并相应的操作单个分区。 创建数据集 val myCollection = "WeChat official account big data brother" .split("

大数据记录 2463

Spark RDD

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。➢ 弹性⚫ 存储的弹性:内存与磁盘的自动切换⚫ 容错的弹性:数据丢失可以自动恢复⚫ 计算的弹性:计算出错重试机制⚫ 分片的弹性:可根据需要重新分片。➢ 分布式:数据存储在大数据集群不同节点上➢ 数据集:RDD 封装了计算逻辑,并不保存数据。

qq_40068304的博客 1309

转换操作(Transformations)是 Spark RDD API 的核心

本文详细介绍了Spark RDD的核心转换操作及其特性,包括map、filter、flatMap等窄依赖操作,以及groupByKey、reduceByKey等宽依赖操作,强调它们在数据转换和聚合中的不同应用场景。文章还解析了转换操作的惰性求值机制,说明Spark通过构建DAG实现整体优化,避免不必要计算。同时对比了repartition和coalesce的性能差异,指出在减少分区时应优先使用coalesce。最后列举了触发实际计算的动作操作,如collect、count等,并解释惰性求值如何带来性能优势。

csdn_tom_168的博客 802

Spark Core入门2【RDD的实质与RDD编程API】

一、对RDD操作的本质 RDD的本质是一个函数,而RDD的变换不过是函数的嵌套.RDD有两类: 输入的RDD: 典型如KafkaRDD、JDBCRDD 转换的RDD: 如MapPartitionsRDD RDD的处理流程: 以如下代码为例: sc.textFile("abc.log").map().saveAsTextFile("") 1. textFile 会构建出一个NewHad...

zp的博客 555

Spark RDD编程初级实践

Spark RDD编程初级实践湖工大永远滴神 茂林!!!第一关 数据去重第二个 整合排序第三关 求平均值 湖工大永远滴神 茂林!!! RDD(Resilient Distributed Datasets, 弹性分布式数据集)是Spark最为核心的概念,它是一个只读的、可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,可在多次计算间重用。Spark用Scala语言实现了RDD的API,程序员可以通过调用API实现对RDD的各种操作,从而实现各种复杂的应用。 RDD编程都是从创建RDD开始的,可以通

m0_49972043的博客 4351
上一篇: spark (python远程开发调试)
下一篇: spark sql常用action
架构师老狼
博客等级 码龄14年 44粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值