gpt4 book ai didi

apache-spark - 使用 Spark SQL 的 SELECT 语句中的 cassandra uuid

转载 作者:行者123 更新时间:2023-12-04 20:16:21 25 4
gpt4 key购买 nike

我在 cassandra (v. 2.2.3) 中有下表

cqlsh> DESCRIBE TABLE historian.timelines;

CREATE TABLE historian.timelines (
assetid uuid,
tslice int,
...
value map<text, text>,
PRIMARY KEY ((assetid, tslice), ...)
) WITH CLUSTERING ORDER BY (deviceid ASC, paramid ASC, fts DESC)
...
;

我想通过以下 java 片段(使用 cassandra spark 连接器 v.1.5.0 和 cassandra 驱动程序核心 v.2.2.0 RC3)通过 Apache Spark(v.1.5.0)提取数据:

// Initialize Spark SQL Context
CassandraSQLContext sqlContext = new CassandraSQLContext(jsc.sc());
sqlContext.setKeyspace(keyspace);
DataFrame df = sqlContext.sql("SELECT * FROM " + tableName +
" WHERE assetid = '085eb9c6-8a16-11e5-af63-feff819cdc9f' LIMIT 2");
df.show();

此时我在访问上面的 show 方法时遇到以下错误:

cannot resolve '(assetid = cast(085eb9c6-8a16-11e5-af63-feff819cdc9f as double))' due to data type mismatch: 
differing types in '(assetid = cast(085eb9c6-8a16-11e5-af63-feff819cdc9f as double))' (uuid and double).;

所以看起来 Spark SQL 没有将 assetid 输入解释为 UUID。我可以做些什么来处理 Spark SQL 查询中的 cassandra UUID 类型?

谢谢!

最佳答案

实际上你的查询参数是一个字符串而不是 UUID,只需像这样转换查询参数:

import java.util.UUID;

DataFrame df = sqlContext.sql("SELECT * FROM " + tableName +
" WHERE assetid = "+ UUID.fromString("085eb9c6-8a16-11e5-af63-feff819cdc9f") +" LIMIT 2");

关于apache-spark - 使用 Spark SQL 的 SELECT 语句中的 cassandra uuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33778952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com