ege*_*ard 29 cassandra datastax-enterprise apache-spark
我试图在Spark 1.1.0中使用Spark Cassandra Connector.
我已经从GitHub上的主分支成功构建了jar文件,并且已经使用了包含的演示.但是,当我尝试将jar文件加载到spark-shell
我无法从com.datastax.spark.connector
包中导入任何类时.
我已经尝试使用该--jars
选项spark-shell
并将带有jar文件的目录添加到Java的CLASSPATH中.这些选项都不起作用.事实上,当我使用该--jars
选项时,日志输出显示Datastax jar正在加载,但我仍然无法从中导入任何内容com.datastax
.
我已经能够将Tuplejump Calliope Cassandra连接器加载到spark-shell
使用中--jars
,所以我知道它正在工作.这只是Datastax连接器,对我来说是失败的.
Lis*_*shu 28
我知道了.以下是我的所作所为:
$ 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
Run Code Online (Sandbox Code Playgroud)
在scala提示符下,
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)
Run Code Online (Sandbox Code Playgroud)
Rus*_*ssS 19
有关详细说明,请查看项目网站 https://github.com/datastax/spark-cassandra-connector/blob/master/doc/13_spark_shell.md
或者随意使用Spark-Packages加载库(并非所有发布的版本) http://spark-packages.org/package/datastax/spark-cassandra-connector
> $SPARK_HOME/bin/spark-shell --packages com.datastax.spark:spark-cassandra-connector_2.10:1.4.0-M3-s_2.10
Run Code Online (Sandbox Code Playgroud)
您将要使用-driver-class-path设置为包含所有连接器库来启动该类
我将引用杰出的艾米托比的博客文章
我发现最简单的方法是设置类路径,然后在REPL中重新启动上下文,并导入必要的类以使sc.cassandraTable()可见.新加载的方法不会显示在选项卡完成中.我不知道为什么.
/opt/spark/bin/spark-shell --driver-class-path $(echo /path/to/connector/*.jar |sed 's/ /:/g')
Run Code Online (Sandbox Code Playgroud)
它会打印一堆日志信息,然后显示scala>提示符.
scala> sc.stop
Run Code Online (Sandbox Code Playgroud)
现在上下文已停止,是时候导入连接器了.
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
Run Code Online (Sandbox Code Playgroud)
DSE类加载器和以前的软件包命名约定存在轻微问题,这将阻止您查找新的spark-connector库.您应该能够通过在启动spark-shell的脚本中删除指定DSE类加载器的行来解决这个问题.
如果您想避免在shell中停止/启动上下文,您还可以将其添加到您的spark属性中:
{} spark_install /conf/spark-defaults.conf
spark.cassandra.connection.host=192.168.10.10
Run Code Online (Sandbox Code Playgroud)
要从spark-shell访问Cassandra,我已经用cassandra-spark-driver和所有依赖项("uberjar")构建了一个程序集.使用--jars选项将它提供给spark-shell,如下所示:
spark-shell --jars spark-cassandra-assembly-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)
我遇到了这里描述的相同问题,这个方法既简单又方便(而不是加载长依赖列表)
我已经用你可以下载的POM文件创建了一个要点.使用pom创建uberjar你应该做:
mvn package
Run Code Online (Sandbox Code Playgroud)
如果您正在使用sbt,请查看sbt-assembly插件.
归档时间: |
|
查看次数: |
20032 次 |
最近记录: |