首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在外壳中装载火花卡桑德拉连接器?

如何在外壳中装载火花卡桑德拉连接器?
EN

Stack Overflow用户
提问于 2014-09-14 19:57:46
回答 6查看 21.9K关注 0票数 28

我试图在Spark1.1.0中使用火花卡桑德拉连接器

我已经成功地从GitHub上的主分支构建了jar文件,并且已经获得了包含的演示程序。但是,当我试图将jar文件加载到spark-shell中时,我无法从com.datastax.spark.connector包中导入任何类。

我尝试在--jars上使用spark-shell选项,并将包含jar文件的目录添加到Java中。这两个选项都不起作用。事实上,当我使用--jars选项时,日志记录输出显示Datastax正在加载,但我仍然不能从com.datastax导入任何东西。

我已经能够使用spark-shell将Tuplejump卡桑德拉连接器加载到--jars中,所以我知道这是可行的。只是Datastax连接器对我来说失败了。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-10-30 16:46:06

这样啊,原来是这么回事。以下是我所做的:

代码语言:javascript
运行
复制
$ git clone https://github.com/datastax/spark-cassandra-connector.git
$ cd spark-cassandra-connector
$ sbt/sbt assembly
$ $SPARK_HOME/bin/spark-shell --jars ~/spark-cassandra-connector/spark-cassandra-connector/target/scala-2.10/connector-assembly-1.2.0-SNAPSHOT.jar 

在scala提示符中

代码语言:javascript
运行
复制
scala> sc.stop
scala> import com.datastax.spark.connector._
scala> import org.apache.spark.SparkContext
scala> import org.apache.spark.SparkContext._
scala> import org.apache.spark.SparkConf
scala> val conf = new SparkConf(true).set("spark.cassandra.connection.host", "my cassandra host")
scala> val sc = new SparkContext("spark://spark host:7077", "test", conf)
票数 28
EN

Stack Overflow用户

发布于 2014-09-18 17:46:05

编辑:现在事情更容易了。

有关深入说明,请参阅项目网站shell.md

也可以随意使用Spark加载库(并非所有已发布的版本) http://spark-packages.org/package/datastax/spark-cassandra-connector

代码语言:javascript
运行
复制
> $SPARK_HOME/bin/spark-shell --packages com.datastax.spark:spark-cassandra-connector_2.10:1.4.0-M3-s_2.10

下面假设您正在使用OSS Apache C*运行

您将希望使用设置为包含所有连接器库的驱动程序类路径来启动该类。

我将引用著名的艾米·托比的博客文章

我发现的最简单的方法是设置类路径,然后使用导入的必要类重新启动REPL中的上下文,以使sc.cassandraTable()可见。新加载的方法不会显示在选项卡完成中。我也不知道原因。

代码语言:javascript
运行
复制
  /opt/spark/bin/spark-shell --driver-class-path $(echo /path/to/connector/*.jar |sed 's/ /:/g')

它将打印大量日志信息,然后显示scala>提示符。

代码语言:javascript
运行
复制
scala> sc.stop

现在上下文已经停止,现在是导入连接器的时候了。

代码语言:javascript
运行
复制
scala> import com.datastax.spark.connector._
scala> val conf = new SparkConf()
scala> conf.set("cassandra.connection.host", "node1.pc.datastax.com")
scala> val sc = new SparkContext("local[2]", "Cassandra Connector Test", conf)
scala> val table = sc.cassandraTable("keyspace", "table")
scala> table.count

如果您正在使用DSE < 4.5.1运行

DSE Classloader和以前的包命名约定有一个小问题,这将阻止您找到新的火花连接器库。您应该能够通过删除在启动spark的脚本中指定DSE类加载器的行来解决这个问题。

票数 18
EN

Stack Overflow用户

发布于 2015-01-21 13:46:37

如果您希望避免停止/启动shell中的上下文,还可以将其添加到火花属性中:

{spark_install}/conf/火花-defaults.conf

代码语言:javascript
运行
复制
spark.cassandra.connection.host=192.168.10.10
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25837436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档