- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试编写一个应将其输出放入 HBase 的 Spark 作业。据我所知,正确的方法是使用 saveAsHadoopDataset
方法。在 org.apache.spark.rdd.PairRDDFunctions
- 这需要我的 RDD
由对组成。
方法saveAsHadoopDataset
需要 JobConf
,这就是我要构建的。根据this link ,我必须在我的 JobConf
上设置一件事是输出格式(实际上没有它就不能工作),比如
jobConfig.setOutputFormat(classOf[TableOutputFormat])
问题是显然这不能编译,因为TableOutputFormat
是通用的,即使它忽略了它的类型参数。所以我尝试了各种组合,比如
jobConfig.setOutputFormat(classOf[TableOutputFormat[Unit]])
jobConfig.setOutputFormat(classOf[TableOutputFormat[_]])
但无论如何我都会得到一个错误
required: Class[_ <: org.apache.hadoop.mapred.OutputFormat[_, _]]
现在,据我所知,Class[_ <: org.apache.hadoop.mapred.OutputFormat[_, _]]
转换为 Class[T] forSome { type T <: org.apache.hadoop.mapred.OutputFormat[_, _] }
.这是我认为有问题的地方,因为:
Class
是不变的TableOutputFormat[T] <: OutputFormat[T, Mutation]
, 但是T <: OutputFormat[_, _]
有没有办法获得OutputFormat[_, _]
的子类型?来自 TableOutputFormat
?问题似乎出自 Java 和 Scala 中泛型之间的差异 - 我能为此做些什么?
编辑:
事实证明这更微妙。我试图在 REPL 中为自己定义一个方法
def foo(x: Class[_ <: OutputFormat[_, _]]) = x
我实际上可以调用它
foo(classOf[TableOutputFormat[Unit]])
甚至
foo(classOf[TableOutputFormat[_]])
就此而言。但是我不能打电话
jobConf.setOutputFormat(classOf[TableOutputFormat[_]])
setOutputFormat
的原始签名在 Java 中是 void setOutputFormat(Class<? extends OutputFormat> theClass)
.我如何从 Scala 中调用它?
最佳答案
这很奇怪,您是否 100% 确定您的导入是正确的(编辑:是的,这是问题,请参阅评论),并且您的构建文件中的工件版本正确吗?如果我提供我的工作项目中的代码片段,也许它会对您有所帮助:
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.mapred.JobConf
import org.apache.hadoop.hbase.mapred.TableOutputFormat
val conf = HBaseConfiguration.create()
val jobConfig: JobConf = new JobConf(conf, this.getClass)
jobConfig.setOutputFormat(classOf[TableOutputFormat])
jobConfig.set(TableOutputFormat.OUTPUT_TABLE, outputTable)
还有我的一些部门:
"org.apache.hadoop" % "hadoop-client" % "2.3.0-mr1-cdh5.0.0",
"org.apache.hbase" % "hbase-client" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-common" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-hadoop-compat" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-it" % "0.96.1.1-cdh5.0.0", /
"org.apache.hbase" % "hbase-hadoop2-compat" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-prefix-tree" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-protocol" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-server" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-shell" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-testing-util" % "0.96.1.1-cdh5.0.0",
"org.apache.hbase" % "hbase-thrift" % "0.96.1.1-cdh5.0.0",
关于scala - 在 Spark 作业中写入 HBase : a conundrum with existential types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625896/
我遇到了导入难题。添加新的导入后,我收到以下错误 from studentApp.models import modelStudent File abc, line 6, in from
我有 2 个引导导航栏,紧接着是 2 个水平居中的下拉菜单,如下所示... ... ...
我正在尝试编写一个应将其输出放入 HBase 的 Spark 作业。据我所知,正确的方法是使用 saveAsHadoopDataset 方法。在 org.apache.spark.rdd.PairRD
我有一个问题,我已经尝试解决了一段时间。我正在按照网站上的说明创建我的第一个 Django 应用程序。我目前正在努力访问管理页面,但一直无法正常工作。此外,当我运行本地服务器时,出现“发生服务器错误。
我正在做一个 JQuery 动画菜单。这只是与我的问题有关的代码部分。 我有一堆动画 div(使用 JQuery),因此它们向左和向右扩展。在 div 中,我使用背景图像,当 div 展开和收缩时,我
我是一名优秀的程序员,十分优秀!