无法将地图列表插入到 Apache Cassandra

Posted

技术标签:

【中文标题】无法将地图列表插入到 Apache Cassandra【英文标题】:cannot insert list of maps to Apache Cassandra 【发布时间】:2020-10-22 17:34:19 【问题描述】:

这是我的架构

CREATE TABLE app_category_agg (
    category text,
    app_count int,
    sp_count int,
    subscriber_count int,
    window_revenue bigint,
    top_apps frozen <list<map<text,int>>>,
    PRIMARY KEY (category)
);

插入java生成的查询就是这种形式

INSERT INTO analytics_info.app_category_agg (category,app_count,sp_count,subscriber_count, window_revenue,top_apps) VALUES ('Entertainment',3,2,65,1620,[APP_992984515=30, APP_991415478=23, APP_999095235=12]);

问题在于地图列表中的地图对象中带有“=”符号。怎么能 我正确插入了吗?在java中。

【问题讨论】:

【参考方案1】:

地图值应指定为key1:val1, key2:val2(参见docs),在您的情况下它应该是一个

['APP_992984515':30, 'APP_991415478':23, 'APP_999095235':12]

但实际上,您不应该自己生成文字查询,因为这可能是一项复杂的任务 - 您需要正确处理引号等。

更合适的是使用prepared statements, and bind values - 在这种情况下,所有语法都将由驱动程序处理。

另一种可能性是使用对象映射器(driver 3.x、driver 4.x 的文档) - 在这种情况下,您可以使用 Java 对象处理表中的行,所有转换也将由驱动程序处理。

【讨论】:

感谢您的回答,如何再次将其映射到 java 中的对象。我收到此错误“未找到请求操作的编解码器:[map java.util.Map];” 您能展示一段您使用的代码吗?它是用于插入还是用于选择? 我把它作为一个问题发布了***.com/questions/62694080/…

以上是关于无法将地图列表插入到 Apache Cassandra的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 到 Apache Cassandra 数据迁移

无法将 playlistItem 插入到播放列表的特定位置

无法将元素插入到列表的向量中

Hive:无法插入到带有地图列的表中

无法将视频插入稍后观看 (WL) 播放列表

将 folium 地图插入到 jinja 模板中