它给了我java.lang.ClassCastException:[Ljava.util.UUID;无法转换为[Ljava.lang.String;
我的工作从包含func getPNGData(image: NSImage) -> NSData? {
if let ci = image.cgImage(forProposedRect: nil, context: nil, hints: nil).map({ CIImage(cgImage: $0) }),
let png = CIContext().pngRepresentation(of: ci, format: kCIFormatRGBAf, colorSpace: CGColorSpace(name: CGColorSpace.sRGB)!) {
// I'm colorblind, so it's very possible that the constants above
// were poorly chosen. Choose whatever makes your colors look right
return png
} else {
return nil
}
}
类型列的PostgreSQL表中读取数据,以便在我尝试在Cassandra上保存数据时收到上述错误。
然而,在Cassandra上创建这个相同的表工作正常! user_ids uuid[]
。
我无法更改源表上的类型,因为我正在从旧系统中读取数据。
我一直在看日志上打印的点org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils.scala
user_ids list<text>
堆栈跟踪
case StringType =>
(array: Object) =>
array.asInstanceOf[Array[java.lang.String]]
.map(UTF8String.fromString)```
答案 0 :(得分:0)
请在此处查看CQL中的数据类型支持。
您应该在表架构中创建list<uuid>
而不是list<text>
。 Java驱动程序无法自动处理此转换。
如果您想使用text
,请先将其转换为应用程序中的String,然后再将其发送给驱动程序。
答案 1 :(得分:0)
您在数据库中存储的user_id值是UUID类型,java中的相同类型是java.util.UUID类型。
所以不要使用java.lang.String,而应该使用java.util.UUID数组或列表,然后存储在cassandra uuid_obj.toString()中以存储在Cassandra中。