Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 声明Edge Graphx类型的空数组_Arrays_Scala_Apache Spark_Spark Graphx - Fatal编程技术网

Arrays 声明Edge Graphx类型的空数组

Arrays 声明Edge Graphx类型的空数组,arrays,scala,apache-spark,spark-graphx,Arrays,Scala,Apache Spark,Spark Graphx,我正在从文件中读取数据以创建图形的边。我已经声明了一个数组,并在其中逐个添加了边。此代码工作正常: class AIRecipes() case class edgeProperty(val relation: String, val usedIn: String) extends AIRecipes var edgeArray = Array(Edge(0L, 0L, edgeProperty("", ""))) edgeArray = edgeArray ++ Array(Edge(Ve

我正在从文件中读取数据以创建图形的边。我已经声明了一个数组,并在其中逐个添加了边。此代码工作正常:

class AIRecipes() 
case class edgeProperty(val relation: String, val usedIn: String) extends AIRecipes

var edgeArray = Array(Edge(0L, 0L, edgeProperty("", "")))
edgeArray = edgeArray ++ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )
但在第一行中,我不想用伪值声明额外的边,而是要声明一个空数组,如下所示:

var edgeArray = Array.empty[Edge[(Long, Long, Object)]]
edgeArray = edgeArray ++ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )
但是它在'+'上给了我以下编译错误:

类型失配;找到:数组[org.apache.spark.graphx.Edge[\u>: 长长的,长长的 net.sansa_stack.template.spark.rdf.TripleReader.edgeProperty:长,长,带有 net.sansa_stack.template.spark.rdf.TripleReader.edgeProperty:org.apache.spark.graphx.Edge[Long, Long,Object],但类数组在类型T中是不变的。您可能希望 要调查通配符类型,如>: org.apache.spark.graphx.Edge[Long,Long,Object]

我也试过:

edgeArray :+ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )

它没有给我编译错误,但没有在数组中添加任何内容。

第一个数组的类型不正确。请注意,Edge仅由其属性参数化,因此您尝试合并的表达式类型为array[Edge[edgeProperty]:

当您将变量定义为Array.empty[Edge[Long,Long,Object]]时

对象部分是第二个问题。正如您在异常消息中所看到的,数组作为任何其他可变容器都是不变的。因此,如果您确实想使用对象,您必须:

scala> var edgeArray = Array.empty[Edge[Object]]
edgeArray: Array[org.apache.spark.graphx.Edge[Object]] = Array()

scala> edgeArray = edgeArray ++ (Array(Edge(1L, 2L, edgeProperty("", "")) ): Array[Edge[Object]])
edgeArray: Array[org.apache.spark.graphx.Edge[Object]] = [Lorg.apache.spark.graphx.Edge;@338
但我还是建议

scala> var edgeArray = Array.empty[Edge[edgeProperty]]
edgeArray: Array[org.apache.spark.graphx.Edge[edgeProperty]] = Array()

scala> edgeArray = edgeArray ++ Array(Edge(1L, 2L, edgeProperty("", "")) )
edgeArray: Array[org.apache.spark.graphx.Edge[edgeProperty]] = [Lorg.apache.spark.graphx.Edge;@7d59e8d4

您可以发布edgeProperty的签名吗?@user9613318 edgeProperty是一个类。类AIRecipes,case类edgePropertyval关系:String,val usedIn:String扩展AIRecipesI更改了var-edgeArray=Array.empty[Edge[Long,Long,Object]]为var-edgeArray=Array.empty[Edge[edgeProperty]]现在工作正常。谢谢:
scala> var edgeArray = Array.empty[Edge[edgeProperty]]
edgeArray: Array[org.apache.spark.graphx.Edge[edgeProperty]] = Array()

scala> edgeArray = edgeArray ++ Array(Edge(1L, 2L, edgeProperty("", "")) )
edgeArray: Array[org.apache.spark.graphx.Edge[edgeProperty]] = [Lorg.apache.spark.graphx.Edge;@7d59e8d4