Scala 在Spark中读取SequenceFile时,是否可以仅计算密钥?

Scala 在Spark中读取SequenceFile时,是否可以仅计算密钥?,scala,apache-spark,sequencefile,Scala,Apache Spark,Sequencefile,我正在尝试读取一个序列文件,该序列文件包含用于spark作业的sequencefile输入的K和V的自定义可写子类 绝大多数行需要通过匹配广播变量(“candidateSet”)和Kclass.getId进行过滤。不幸的是,对于每个记录,值V都是反序列化的,不管使用标准方法是什么,并且是根据占用大部分时间的概要文件 这是我的密码。请注意,我最近的一次尝试是一般地将此处读取为“可写”,然后进行回溯,这在功能上起作用,但仍然会导致迭代器中的完全反序列化 val rdd = sc.sequenceFi

我正在尝试读取一个序列文件,该序列文件包含用于spark作业的sequencefile输入的K和V的自定义可写子类

绝大多数行需要通过匹配广播变量(“candidateSet”)和Kclass.getId进行过滤。不幸的是,对于每个记录,值V都是反序列化的,不管使用标准方法是什么,并且是根据占用大部分时间的概要文件

这是我的密码。请注意,我最近的一次尝试是一般地将此处读取为“可写”,然后进行回溯,这在功能上起作用,但仍然会导致迭代器中的完全反序列化

val rdd = sc.sequenceFile(
      path,
      classOf[MyKeyClassWritable],
      classOf[Writable]
    ).filter(a => candidateSet.value.contains(a._1.getId))```

事实证明Twitter有一个库可以很好地处理这个问题。具体地说,使用此类允许在以后的步骤中通过将序列化字段作为DataInputBuffers读取来评估这些字段