Как сохранить org.apache.spark.mllib.linalg.Vector в кадре данных для cassandra

У меня есть требование сохранить фрейм данных, который содержит org.apache.spark.mllib.linalg.Vector в одном из столбцов. При создании таблицы в cassandra из фрейма данных возникает ошибка.

java.lang.Exception: Cassandra Writer Failed. java.lang.IllegalArgumentException: Unsupported type: org.apache.spark.mllib.linalg.VectorUDT@f71b0bce
        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)

person Desanth pv    schedule 09.08.2016    source источник


Ответы (1)


Если вы хотите сохранить двоичное значение этого типа, вам нужно просто преобразовать его в массив байтов, а затем сохранить в столбец больших двоичных объектов.

Если вы хотите сохранить его как набор значений, вам нужно будет выполнить соответствующее преобразование в коллекцию Scala.

person RussS    schedule 09.08.2016