У меня есть следующий код, который пытается соединить 2 таблицы cassandra в искры.Недопустимое значение null для ключа раздела раздела url
val imageKeywords = sc.cassandraTable[ImageMetadata]("images", "metadata")
val imageAndPageKeywords = imageKeywords
.joinWithCassandraTable[PagesMetadata]("pages2", "metadata")
.on(SomeColumns("tid", "url" as "pu"))
Классы случае я использую для отображения данных, как показано ниже
case class ImageMetadata(tid: String, iu: String, pu: Option[String],
mk: List[String], fk: List[String], ak: List[String], ipk: List[String], pk: List[String], ik: List[String], ck: List[String])
case class PagesMetadata(tid: String, url: String, pk: List[String], uk: List[String], hk: List[String], ok: List[String], tc: List[String])
Я получаю сообщение об ошибке, когда я пытаюсь сделать некоторые операции, такие как ниже
imageAndPageKeywords.collect.toList.sortBy(_._1.tid).take(10).foreach(println)
StackTrace ошибка -
причиненный: com.datastax.driver.core.e xceptions.InvalidQueryException: Недопустимое значение null для ключа ключа раздела url at com.datastax.driver.core.Responses $ Error.asException (Responses.java:103) at com.datastax.driver.core.DefaultResultSetFuture.onSet (DefaultResultSetFuture. java: 140) at com.datastax.driver.core.RequestHandler.setFinalResult (RequestHandler.java:293) at com.datastax.driver.core.RequestHandler.onSet (RequestHandler.java:455) at com.datastax. driver.core.Connection $ Dispatcher.messageReceived (Connection.java:734) на org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) на org.jboss.netty.handler.timeout.IdleStateAwareChannelUpstreamHandler. handleUpstream (IdleStateAwareChannelUpstreamHandler.java:36) на или g.jboss.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) на org.jboss.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline.java:791) на org.jboss.netty.handler. timeout.IdleStateHandler.messageReceived (IdleStateHandler.java:294) на org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) на org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java: 564) в org.jboss.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline.java:791) в org.jboss.netty.channel.Channels.fireMessageReceived (Channels.java:296) в org.jboss. netty.handler.codec.oneone.OneToOneDecod er.handleUpstream (OneToOneDecoder.java:70) в org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) в org.jboss.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline.java: 791) на org.jboss.netty.channel.Channels.fireMessageReceived (Channels.java:296) на org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived (FrameDecoder.java:462) в орг. jboss.netty.handler.codec.frame.FrameDecoder.callDecode (FrameDecoder.java:443) at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived (FrameDecoder.java:303) at org.jboss. netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) at org. jboss.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) на org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:559) на org.jboss.netty.channel.Channels.fireMessageReceived (Channels.java:268) на org.jboss.netty.channel.Channels.fireMessageReceived (Channels.java:255) на org.jboss.netty.channel.socket.nio.NioWorker.read (NioWorker.java:88) на org.jboss.netty.channel.socket.nio.AbstractNioWorker.process (AbstractNioWorker.java:108) на org.jboss.netty.channel.socket.nio.AbstractNioSelector.run (AbstractNioSelector.java: 318) на org.jboss.netty.channel.socket.nio.AbstractNioWorker.run (AbstractNioWorker.java:89) на org.jboss.netty.channel.socket.nio.NioWorker.run (NioWorker.java: 178) at org.jboss.netty.util.ThreadRenamingRunnable.run (ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker $ 1.run (DeadLockProofWorker.java:42) ... 3 более
Есть ли способ, с помощью которого можно объединить работу? Я как бы пытался выяснить, разрешит ли Option (String) URL-адрес моей проблеме. – l0n3r4ng3r
См. Отредактированный ответ – doanduyhai
Вот что я делаю с учетом вашего предложения. 'вал imageKeywords = sc.cassandraTable [ImageMetadata] ("изображения", "метаданные")' ' вал pageKeywordsByTidUrl = imageKeywords.joinWithCassandraTable [PagesMetadata] ("pages2", "метаданные") .На (SomeColumns (" TID "," url "как" pu ")) .filter (f => f._1.pu.isDefined) .keyBy {x => Joinkey (x._1.tid, x._1.iu)}' Но по-прежнему та же ошибка – l0n3r4ng3r