Scala 如何处理卡桑德拉;“持续时间”;Spark中的数据类型?

Scala 如何处理卡桑德拉;“持续时间”;Spark中的数据类型?,scala,apache-spark,cassandra,Scala,Apache Spark,Cassandra,我在使用datastacks/Spark Cassandra连接器将Cassandra(锡拉)数据加载到Apache Spark时遇到问题: scala> val rdd = sc.cassandraTable[(String)](keyspace, table).select("url").limit(10).collect() java.util.NoSuchElementException: key not found: duration at scala.collection.Ma

我在使用datastacks/Spark Cassandra连接器将Cassandra(锡拉)数据加载到Apache Spark时遇到问题:

scala> val rdd = sc.cassandraTable[(String)](keyspace, table).select("url").limit(10).collect()
java.util.NoSuchElementException: key not found: duration
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMap.default(Map.scala:59)
at scala.collection.MapLike$class.apply(MapLike.scala:141)
at scala.collection.AbstractMap.apply(Map.scala:59)
at com.datastax.spark.connector.types.ColumnType$$anonfun$1.applyOrElse(ColumnType.scala:117)
我用Scala和Python尝试了不同的Spark和Spark cassandra连接器版本,但没有成功。 我猜是因为datastacks/spark cassandra connector中缺少持续时间数据类型支持,我检查了ColumnType.scala,它们只有:

  private[connector] val primitiveTypeMap = Map[DataType, ColumnType[_]](
    DataType.text() -> TextType,
    DataType.ascii() -> AsciiType,
    DataType.varchar() -> VarCharType,
    DataType.cint() -> IntType,
    DataType.bigint() -> BigIntType,
    DataType.smallint() -> SmallIntType,
    DataType.tinyint() -> TinyIntType,
    DataType.cfloat() -> FloatType,
    DataType.cdouble() -> DoubleType,
    DataType.cboolean() -> BooleanType,
    DataType.varint() -> VarIntType,
    DataType.decimal() -> DecimalType,
    DataType.timestamp() -> TimestampType,
    DataType.inet() -> InetType,
    DataType.uuid() -> UUIDType,
    DataType.timeuuid() -> TimeUUIDType,
    DataType.blob() -> BlobType,
    DataType.counter() -> CounterType,
    DataType.date() -> DateType,
    DataType.time() -> TimeType
  )
有人知道在这种情况下如何处理Cassandra的duration数据类型吗?

Spark支持的定义不包含duration,但他们声明

您可以将符合CQL标准的字符串转换为数字, 日期、地址或UUID

此外,Java驱动程序已经有了,构造函数将字符串值强制转换为
duration
。考虑到这一点,您应该能够创建类似于示例的自定义Spark连接器

  • 我不是Spark用户,建议仅基于文档