3

Ich habe eine Anforderung zum Speichern von Datenrahmen, die org.apache.spark.mllib.linalg.Vector in einer der Spalte enthält. Beim Erstellen der Tabelle in Cassandra aus dem Datenframe wirft es Fehler.So speichern Sie org.apache.spark.mllib.linalg.Vector im Datenframe zu Cassandra

java.lang.Exception: Cassandra Writer Failed. java.lang.IllegalArgumentException: Unsupported type: [email protected] 
     at com.datastax.spark.connector.types.ColumnType$.unsupportedType$1(ColumnType.scala:132) 
     at com.datastax.spark.connector.types.ColumnType$.fromSparkSqlType(ColumnType.scala:155) 
     at com.datastax.spark.connector.mapper.DataFrameColumnMapper$$anonfun$1.apply(DataFrameColumnMapper.scala:18) 
     at com.datastax.spark.connector.mapper.DataFrameColumnMapper$$anonfun$1.apply(DataFrameColumnMapper.scala:16) 
     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
     at scala.collection.immutable.List.foreach(List.scala:318) 
     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) 
     at scala.collection.AbstractTraversable.map(Traversable.scala:105) 
     at com.datastax.spark.connector.mapper.DataFrameColumnMapper.newTable(DataFrameColumnMapper.scala:16) 
     at com.datastax.spark.connector.cql.TableDef$.fromDataFrame(Schema.scala:206) 

Antwort

2

Wenn Sie den binären Wert dieses Typs speichern möchten, müssen Sie nur das Array in einen Byte konvertieren sie dann zu einer BLOB-Spalte speichern.

Wenn Sie es als eine Reihe von Werten speichern möchten, müssen Sie die entsprechende Konvertierung in eine Scala-Sammlung vornehmen.