如何在 zeppelin 的 %ignite.ignitesql 解释器中提及 withkeepBinary
how to mention withkeepBinary in %ignite.ignitesql interpreter in zeppelin
我在 IgniteRDD 中保存了一些 Spark 数据集,键和值都作为 BinaryObject,它工作正常,我也可以使用 Ignite 代码和下面的 %ignite 解释器示例进行查询。
%ignite
import org.apache.ignite._
import org.apache.ignite.binary._
import org.apache.ignite.cache.query._
import org.apache.ignite.configuration._
import scala.collection.JavaConversions._
val cache: IgniteCache[BinaryObject, BinaryObject] = ignite.cache("test123")
val qry = new SqlFieldsQuery(
"select _val from testValue",
true)
val res = cache.withKeepBinary().query(qry).getAll()
collectionAsScalaIterable(res).foreach(println _)
但是当我尝试使用 %ignite.ignitesql 解释器进行查询时
%ignite.ignitesql
select * from testValue
失败 "Failed resolve class for ID: -1422444403"
对我来说,这两种方式的不同之处在于,首先我指定了 withKeepBinary() ,如何在 %ignite.ignitesql 中完成相似,以便可以直接使用 sql
现在这是不可能的,我创建了一个票来解决这个问题:https://issues.apache.org/jira/browse/IGNITE-4141
但无论如何,我建议在使用 Ignite 时避免使用 select *
查询,因为结果集将包含表示完整对象的预定义 _key
和 _val
字段。最好在结果集中明确列出您需要的字段,这样您就不会获取不需要的数据。
我在 IgniteRDD 中保存了一些 Spark 数据集,键和值都作为 BinaryObject,它工作正常,我也可以使用 Ignite 代码和下面的 %ignite 解释器示例进行查询。
%ignite
import org.apache.ignite._
import org.apache.ignite.binary._
import org.apache.ignite.cache.query._
import org.apache.ignite.configuration._
import scala.collection.JavaConversions._
val cache: IgniteCache[BinaryObject, BinaryObject] = ignite.cache("test123")
val qry = new SqlFieldsQuery(
"select _val from testValue",
true)
val res = cache.withKeepBinary().query(qry).getAll()
collectionAsScalaIterable(res).foreach(println _)
但是当我尝试使用 %ignite.ignitesql 解释器进行查询时
%ignite.ignitesql
select * from testValue
失败 "Failed resolve class for ID: -1422444403"
对我来说,这两种方式的不同之处在于,首先我指定了 withKeepBinary() ,如何在 %ignite.ignitesql 中完成相似,以便可以直接使用 sql
现在这是不可能的,我创建了一个票来解决这个问题:https://issues.apache.org/jira/browse/IGNITE-4141
但无论如何,我建议在使用 Ignite 时避免使用 select *
查询,因为结果集将包含表示完整对象的预定义 _key
和 _val
字段。最好在结果集中明确列出您需要的字段,这样您就不会获取不需要的数据。