当前位置: 首页 > 知识库问答 >
问题:

分区键部分url的无效空值

有睿
2023-03-14
 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.exceptions.invalidQueryException:在com.datastax.driver.core.responction$error.asexception(response.java:103)在com.datastax.driver.core.defaultsultsetfuture.onset(defaultsultsetfuture.java:140)在com.datastax.driver.core.requesthandler.java:293)在在org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpper(simpleChannelUpstreamHandler.java:70)在org.jboss.netty.handler.timeout.idleStateAwareChannelUpstreamHandler.handleUpper(idleStateAwareChannelUpstreamHandler.java:36)在org.jboss.netty.channel.defaultChannelPipeline.sendupStreamStream.java:564)在channelPipeline.java:791)位于org.jboss.netty.handler.timeout.idleStateHandler.messageReceed(idleStateHandler.java:294)在org.jboss.netty.channel.simpleChanneLupStreamHandler.handleUpper(simpleChanneLupStreamHandler.java:70)在org.jboss.netty.channel.defaultChannelHandler.java:70)在org.jboss.netty.channel.defaultChannelPipeline.sendupStream(Eceed(channels.java:296)在org.jboss.netty.handler.codec.oneTooneDecoder.handleUpstream(oneTooneDecoder.java:70)在org.jboss.netty.channel.defaultChannelPipeline.sendupstream(defaultChannelPipeline.java:564)在org.jboss.netty.channel.defaultChannelPipeline.java:564)在.frame.frameDecoder.unfoldandFireMessageReceed(frameDecoder.java:462)位于org.jboss.netty.handler.codec.frame.frameDecoder.calldecode(frameDecoder.java:443)在org.jboss.netty.channel.simpleChannelupStreamHandler.handleUpper(simpleChannelupStreamHandler.java:303)在org.jboss.netty.channel.defaultChannelPipeline.java:70)在org.jboss.netty.channel.defaultChannelPipeline.java:564)在firemessageReceed(channels.java:268)在org.jboss.netty.channel.channels.firemessageReceed(channels.java:255)在org.jboss.netty.channel.nio.nioworker.read(nioworker.java:88)在org.jboss.netty.nocket.nio.abstractnioworker.process(abstractnioworker.process(abstractnioworker.java:108)在el.socket.nio.abstractnioworker.run(abstractnioworker.java:89)位于org.jboss.netty.channel.socket.nio.niowor在org.jboss.netty.util.threadrenamingrunnable.run(threadrenamingrunnable.java:108)在org.jboss.netty.util.internal.deadlockproofworker$1.run(deadlockproofworker.java:42)...3个更多

共有1个答案

钱星华
2023-03-14

简单地说,该异常告诉您它无法执行联接,因为用于联接ImageMetadata和PagesMetadata的列为NULL。

在您的示例中,ImageMetadata中的某些url(pu)值为空。

奇怪的是,您使用url nullable(option[String])定义PagesMetadata,它似乎是表主键的一部分

val imageAndPageKeywords = imageKeywords
  .filter(im -> im.pu.isDefined)
  .joinWithCassandraTable[PagesMetadata]("pages2", "metadata")
  .on(SomeColumns("tid", "url" as "pu"))
 类似资料:
  • 我有一个带有分区键(UUID)的DynamoDB表,其中有几个属性(如名称、电子邮件、创建日期等)。创建日期是项目中的一个属性,其格式为YYYY-MM-DD。但现在有一个要求更改-我必须根据创建日期对其进行排序,并提供整个数据(也就是说,我不能只将数据放在某个特定分区上,而是以排序方式将所有分区中的所有数据都放在一起。我知道这可能需要DynamoDB花费时间从所有分区中提取数据并在之后进行排序。我

  • 我正在DynamoDB中设计一个表,它将包含大量记录,每个记录都有一个唯一的ID和一个时间戳。我需要检索一组位于两个日期之间的记录,而不管所有其他属性值如何。 为时间戳字段添加全局辅助索引似乎是一个合乎逻辑的解决方案,但这并不简单。 DynamoDB中的Query命令需要一个KeyConditionExpression参数,该参数确定查询返回的结果。从DynamoDB开发人员指南: 要指定搜索条件

  • 我想知道,在什么情况下,具有相同分区键的消息会进入不同的分区。 我使用下面给出的命令运行了属于同一组的两个消费者在控制台中监听一个主题: 我使用“纳米/Kafka-php”库将消息放入带有键 的主题。当我发送多个这样的消息时,我发现很少有消息转到第二个消费者,而大多数消息都发送给消费者1。 由于我对所有消息使用相同的密钥,因此我希望所有消息都由同一个使用者使用。每个使用者都绑定到每个分区。 我使用

  • 问题内容: 最近我收到以下错误: 致命异常:NSInternalInconsistencyException无效更新:部分0中的项目数无效。更新(13)之后现有部分中包含的项目数必须等于更新(12)前该部分中包含的项目数,再加上或减去从该部分插入或删除的项目数(插入0,删除0),再加上或减去从该部分移入或移出的项目数(移入0,移出0)。 我的tvOS客户端中的以下代码中发生错误: 我在集合视图中仅

  • 我正在使用ElasticSearch5,找不到以下问题的解决方案:我想在文档中搜索带斜杠的字符串(url的一部分)。但它不会返回匹配的文档。我读过一些东西,带斜线的字符串被ES拆分,这不是我想要的字段。我尝试用映射在字段上设置“not_analysis”,但似乎无法使其工作。 “创建索引”:Put http://localhost:9200/test “添加文档”:post http://loca

  • Kafka只提供一个分区内消息的总顺序,而不提供主题中不同分区之间的消息的总顺序。每分区排序与按键对数据进行分区的能力相结合,对于大多数应用程序来说已经足够了。但是,如果您需要消息的总顺序,这可以通过只有一个分区的主题来实现,尽管这意味着每个使用者组只有一个使用者进程。 下面是我的问题: > 这是否意味着如果我希望有多个消费者(来自同一组)阅读一个主题,我需要有多个分区? 分区是如何编号的?从0开