我想读一个来自卡桑德拉密钥空间和column_family的数据文件。在运行sparkR时,我将调用相应的火花- cassandra连接器包,并将conf设置为本地sparkR主机。在运行下面的代码时,我不会收到任何错误。
$ ./bin/sparkR --packages com.datastax.spark:spark-cassandra-connector_2.10:1.5.0-M2 --conf spark.cassandra.connection.host=127.0.0.1sc <- sparkR.init(master="local")
sqlContext <- sparkRSQL.init(sc)
people <-read.df(sqlContext,
source = "org.apache.spark.sql.cassandra",
keyspace = "keyspace_name", table = "table_name")我得到以下错误,
Error in writeJobj(con, object) : invalid jobj 1我是否必须将conf传递给sparkContext赋值(sc),以及如何在sparkR中传递?
下面是我的星火和卡桑德拉版本,
火花: 1.5.1卡桑德拉: 2.1.6卡桑德拉连接器更新后,每个zero323建议使用1.5.0-M2
这是我的堆栈追踪的要点。
https://gist.github.com/bhajer3/419561edcb0dc5db2f71
编辑
我能够从不包括任何Cassandra集合数据类型的表中创建数据帧,例如Map、Set和List。但是,我需要数据的许多模式确实包括这些收集数据类型。
因此,sparkR在读取来自cassandra和column_family的数据时不支持Cassandra收集数据类型。请参阅我的详细报告/测试程序。
发布于 2015-10-18 20:16:55
初始问题
一般来说,你必须匹配火花,spark-cassandra-connector和卡桑德拉版本。连接器版本应该匹配主要的火花版本(连接器1.5用于火花1.5,连接器1.4用于火花1.4等等)。
与Cassandra版本的兼容性有点棘手,但您可以在连接器README.md中找到兼容版本的完整列表。
编辑
SparkR < 1.6不支持收集复杂的数据类型,包括数组或映射。它已经被火花-10049解决了。如果您构建星火表单母版,它将按预期工作。1.6中没有cassandra-connector,但1.5M2似乎运行得很好,至少在DataFrame API中是这样。
Note
它看起来像是连接器1.5-M2错误地将Date键报告为Timestamps,所以如果在数据库中使用这些键,请注意。
https://stackoverflow.com/questions/33192469
复制相似问题