小编S.K*_*ang的帖子

在Spark中使用reduceByKey时是否有有效的分区方法?

当我使用reduceByKey或者aggregateByKey,我遇到了分区问题.

EX)reduceBykey(_+_).map(code)

特别是,如果输入数据偏斜,则在使用上述方法时分区问题变得更糟.

所以,作为解决方案,我使用repartition方法.

例如,http://dev.sortable.com/spark-repartition/与此类似.

这对于分区分发很有用,但repartition也很昂贵.

有没有办法明智地解决分区问题?

partitioning apache-spark rdd

5
推荐指数
1
解决办法
3471
查看次数

如何替换RDD 2中每个键的RDD 1中的值?

这是两个RDD。

表1对(键,值)

val table1 = sc.parallelize(Seq(("1", "a"), ("2", "b"), ("3", "c")))  
//RDD[(String, String)]
Run Code Online (Sandbox Code Playgroud)

表2-数组

val table2 = sc.parallelize(Array(Array("1", "2", "d"), Array("1", "3", "e")))  
//RDD[Array[String]]
Run Code Online (Sandbox Code Playgroud)

我试图使用table1中的键和值将table2的元素(例如,“ 1”)更改为“ a”。我的预期结果如下:

RDD[Array[String]] = (Array(Array("a", "b", "d"), Array("a", "c", "e")))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

有没有办法使之成为可能?

如果是这样,使用庞大的数据集会更有效吗?

scala apache-spark

5
推荐指数
1
解决办法
496
查看次数

如何通过key或filter()使用两个RDD的spark intersection()?

我想用intersection()钥匙或filter()火花来使用.

但我真的不知道如何使用intersection()密钥.

所以我尝试使用filter(),但它没有用.

示例 - 这是两个RDD:

data1 //RDD[(String, Int)] = Array(("a", 1), ("a", 2), ("b", 2), ("b", 3), ("c", 1))
data2 //RDD[(String, Int)] = Array(("a", 3), ("b", 5))

val data3 = data2.map{_._1}

data1.filter{_._1 == data3}.collect //Array[(String, Int] = Array()
Run Code Online (Sandbox Code Playgroud)

我希望得到一个(key,value)对,其密钥与data1基于密钥的密钥相同data2.

Array(("a", 1), ("a", 2), ("b", 2), ("b", 3)) 是我想要的结果.

是否有一种方法来解决这个问题使用intersection()键或filter()

scala intersection filter apache-spark rdd

3
推荐指数
1
解决办法
9031
查看次数

Spark中“不允许自我压制”的主要原因是什么?

当火花使用saveAsTextFile将大文件写入HDFS时,出现错误: java.lang.IllegalArgumentException: Self-suppression not permitted at java.lang.Throwable.addSuppressed(Throwable.java:1043) Caused by: java.io.IOException: All datanodes DatanodeInfoWithStorage

我一直在寻找解决方案,但是找不到正确的解决方案,我也不知道为什么。

是什么导致这些错误,我该如何解决?

hdfs apache-spark

1
推荐指数
1
解决办法
6676
查看次数

标签 统计

apache-spark ×4

rdd ×2

scala ×2

filter ×1

hdfs ×1

intersection ×1

partitioning ×1