如何使用spark-connector-api在where子句中设置blob列?

use*_*400 5 java apache-spark spark-cassandra-connector

我试图找出如何在where子句下设置blob列.任何的想法?

例如,如果我在cqlsh中放入以下查询,它就可以工作

select * from hello where id=0xc1c1795a0b;
Run Code Online (Sandbox Code Playgroud)

// id是cassandra中的blob列

我尝试了以下内容

JavaRDD<CassandraRow> cassandraRowsRDD = javaFunctions(sc).cassandraTable("test", "hello")
.select("range" )
.where("id=?", "0xc1c1795a0b");
Run Code Online (Sandbox Code Playgroud)

这给了我一个类型转换器例外

我试过这个

JavaRDD<CassandraRow> cassandraRowsRDD = javaFunctions(sc).cassandraTable("test", "hello")
.select("range" )
.where("id=?", "0xc1c1795a0b".getBytes());
Run Code Online (Sandbox Code Playgroud)

这没有给我任何错误,但它没有返回任何结果.我的cqlsh中的查询确实返回了一堆结果.所以我不确定在where子句中设置一个blob.我正在使用Java.有任何想法吗?

aba*_*hel 3

用这个。

import com.datastax.driver.core.utils.Bytes;

JavaRDD<CassandraRow> cassandraRowsRDD = javaFunctions(sc).cassandraTable("test", "hello")
.select("range" )
.where("id=?",Bytes.getArray(Bytes.fromHexString("0xc1c1795a0b")));
Run Code Online (Sandbox Code Playgroud)