Spark 对分隔数据进行排序

2024-01-12

我是 Spark 新手。您能告诉我以下代码有什么问题吗:

val rawData="""USA | E001 | ABC DE | 19850607 | IT | $100
UK | E005 | CHAN CL | 19870512 | OP | $200
USA | E003 | XYZ AB | 19890101 | IT | $250
USA | E002 | XYZ AB | 19890705 | IT | $200"""
val sc = ...     
val data= rawData.split("\n")
val rdd= sc.parallelize(data)
val data1=rdd.flatMap(line=> line.split(" | "))
val data2 = data1.map(arr => (arr(2), arr.mkString(""))).sortByKey(false)
data2.saveAsTextFile("./sample_data1_output")

Here, .sortByKey(false)不工作,编译器给我错误:

[error] /home/admin/scala/spark-poc/src/main/scala/SparkApp.scala:26: value sortByKey is not a member of org.apache.spark.rdd.RDD[(String, String)]
[error] val data2 = data1.map(arr => (arr(2), arr.mkString(""))).sortByKey(false) 

问题是如何获取MappedRDD?或者我应该在什么对象上调用 sortByKey()?


Spark 在成对的 RDD 上提供了额外的操作,例如 sortByKey()。这些操作可通过名为 PairRDDFunctions 的类来实现,Spark 使用隐式转换来自动执行 RDD -> PairRDDFunctions 包装。

要导入隐式转换,请将以下行添加到程序顶部:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

Spark 编程指南的部分对此进行了讨论使用键值对 https://spark.apache.org/docs/latest/programming-guide.html#working-with-key-value-pairs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 对分隔数据进行排序 的相关文章

随机推荐