首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >com.arangodb.velocypack.exception.VPackParserException: java.lang.InstantiationException

com.arangodb.velocypack.exception.VPackParserException: java.lang.InstantiationException
EN

Stack Overflow用户
提问于 2017-01-11 16:10:01
回答 1查看 800关注 0票数 0

我正在尝试将我的ArangoDb数据库连接到scala,但是当连接完成时,我正在执行操作,我有一个VPackParserException错误。我的代码:

代码语言:javascript
运行
复制
import com.arangodb.spark.{ArangoSpark, ReadOptions}
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import scala.beans.BeanProperty

object ArangotoSpark {

def main(args: Array[String]) {
  case class netflow(@BeanProperty SrcHost: String,
                   @BeanProperty DstHost: String,
                   @BeanProperty SrcPort: String,
                   @BeanProperty DstPort: String,
                   @BeanProperty Protocol: String,
                   @BeanProperty StartTS: String,
                   @BeanProperty EndTS: String,
                   @BeanProperty Packets: Int,
                   @BeanProperty Bytes: Int) {  }

  val conf = new SparkConf().setAppName("Simple Application").setMaster("local[*]")
    .set("arangodb.host", "127.0.0.2")
    .set("arangodb.port", "8529")
    .set("arangodb.user", "root")
    .set("arangodb.password", "rut")
    .set("arangodb.database", "netflow")
  val sc = new SparkContext(conf)
  val rdd = ArangoSpark.load[netflow](sc, "N201701031130", ReadOptions("netflow"))
  val rdd2 = rdd.filter { x => x.SrcHost.matches("15.33.165.30") }
  rdd2.count()
  }
}

任何帮助都是非常感谢的。谢谢。

UPDATE:现在我的代码如下所示:

代码语言:javascript
运行
复制
case class nf (@BeanProperty cadena: String){
   def this() = this(cadena = null)}
val rdd = ArangoSpark.load[nf](sc, "N201701031130", ReadOptions("netflow"))
println(rdd.count())
println("*************************************")
rdd.collect.foreach(println(_))

rdd.count给出了正确的文档数,但是当我试图打印它们时,我只有nf(null)行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-12 08:10:48

netflow需要一个无参数构造函数。

VelocyPack反序列化器将传入的VelocyPack反序列化为Java/Scala对象--在Java驱动程序的外壳下--需要它实例化类。

更新:

您不需要解析它就可以处理字段名。您的case类可以具有与存储的文档相同的字段。来自java驱动程序的序列化程序/反序列化程序可以使用它。但是,您还需要一个无参数构造函数。

您的案例类如下所示:

代码语言:javascript
运行
复制
case class netflow(@BeanProperty SrcHost: String,
                   @BeanProperty DstHost: String,
                   @BeanProperty SrcPort: String,
                   @BeanProperty DstPort: String,
                   @BeanProperty Protocol: String,
                   @BeanProperty StartTS: String,
                   @BeanProperty EndTS: String,
                   @BeanProperty Packets: Int,
                   @BeanProperty Bytes: Int) {
  def this() = this(null,null,null,null,null,null,null,null,null)}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41595554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档