scala - 为什么 WritableConverter 是私有的?
问题描述
我想要一个函数来打开一个 sequenceFile 并提供包含 K/V 对的文件的路径。我在想这样的事情:
def sequenceFileWithPath[K, V](
input: String,
minPartitions: Int
)(implicit
sc: SparkContext,
km: ClassTag[K],
vm: ClassTag[V],
kcf: () => WritableConverter[K],
vcf: () => WritableConverter[V]
): RDD[(Path, K, V)] = {
val rdd = sc.sequenceFile[K, V](input).asInstanceOf[HadoopRDD[K, V]]
rdd mapPartitionsWithInputSplit {
case (inputSplit, t) =>
val path = inputSplit.asInstanceOf[FileSplit].getPath
t map { case (k, v) => (path, k, v) }
}
}
```
但是,WritableConverter
是私有的,使得编译失败。问题:
- 为什么是
WritableConverter
私人的?我感觉它使扩展sequenceFile[K,V]
. 此外,重用可用的转换器会很有用。 - 如何解决这个问题以便仍然能够使用 Scala 类型而不是 的实例进行函数调用
Writable
,例如sequenceFileWithPath[String, Int]
?
解决方案
推荐阅读
- json - 如何从同一个json文件中grep两个行值并在另一个文件中并排显示它们?
- html - 试图从我的页面中删除空白
- java - 在 Maven 生命周期中运行 JUnit5 和 Spock
- html - Bootstrap - 列溢出(滚动)
- python - 扩展安装错误:请先安装nodejs 5+和npm再继续安装
- indy - 在 TidHTTPServer 中阻止传入的 IP
- r - 使用 if else 语句在 df 的几列上循环
- c# - 如何为 C++ 库创建 CLI 包装器?
- angular - 如何为我的 Angular 应用程序注册 ngrx 子功能(StoreModule.forFeature())?
- vertica - vertica如何限制数据库大小