【发布时间】:2024-01-20 23:30:01
【问题描述】:
我found a similar post 但没有帮助。
我使用 Cassandra 已经有一段时间了,现在我正在尝试设置 spark 和 spark-cassandra-connector。我正在使用 IntelliJ IDEA 来做到这一点(第一次使用 IntelliJ IDEA 和 Scala,所以你明白了)
我的操作系统是 Windows 10。这就是我所做的:
内部../spark-2.4.5-bin-hadoop2.7/bin:spark-class.cmd org.apache.spark.deploy.master.Master
../spark-2.4.5-bin-hadoop2.7/bin内部:spark-class.cmd org.apache.spark.deploy.worker.Worker -c 1 spark://192.168.0.3:7077
build.gradle
apply plugin: 'scala'
apply plugin: 'idea'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
idea {
project {
jdkName = '1.8'
languageLevel = '1.8'
}
}
dependencies {
compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.4.5'
compile group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.5'
compile group: 'org.scala-lang', name: 'scala-library', version: '2.11.11'
compile group: 'com.datastax.spark', name: 'spark-cassandra-connector_2.11', version: '2.4.0'
}
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:12.0.1'
}
}
compileScala.targetCompatibility = "1.8"
compileScala.sourceCompatibility = "1.8"
SparkModule.scala
package org.sentinel.spark_module
import org.apache.spark.{SparkConf, SparkContext}
import com.datastax.spark.connector._
object SentinelSparkModule {
def main(args: Array[String]) {
val conf = new SparkConf().set("spark.cassandra.connection.host", "127.0.0.1")
.set("spark.cassandra.connection.port", "9042")
.setAppName("Sentinel").setMaster("spark://192.168.0.3:7077")
val sc = new SparkContext(conf)
val rdd = sc.cassandraTable("keyspace", "table")
val values = rdd.groupBy((CassandraRow) => {
@throws[Exception]
def call(row: Nothing) = CassandraRow.getString("column")
}).take(10).foreach(println)
}
}
即使发生错误,我仍然可以看到应用程序在 http://localhost:8080/ 中运行,直到我在 IDE 中停止执行。
完整堆栈转储的摘录:
线程“main”java.io.IOException 中的异常:无法打开本机 在 {127.0.0.1}:9042 连接到 Cassandra
原因:com.datastax.driver.core.exceptions.NoHostAvailableException:全部 主机尝试查询失败(尝试:/127.0.0.1:9042 (com.datastax.driver.core.exceptions.OperationTimedOutException: [/127.0.0.1:9042] 操作超时))
最后,即使它说超时,我也在从我的网络应用程序 (node.js) 查询 Cassandra,因为我正在编写代码并且查询工作正常。所以,我不知道为什么这对 Cassandra 来说是个问题,但我想可能是这样。
谢谢
编辑:
我包含了compile group: 'com.datastax.cassandra', name: 'cassandra-driver-core', version: '3.0.0' 和同样的错误。 (version compatibility table)
编辑:
nodetool status 显示:
Datacenter: datacenter1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 138.59 MiB 256 100.0% 77d808e6-5c57-494a-b6fb-7e73593dbb46 rack1
编辑:
cqlsh 127.0.0.1 9042 显示:
WARNING: console codepage must be set to cp65001 to support utf-8 encoding on Windows platforms.
If you experience encoding problems, change your console codepage with 'chcp 65001' before starting cqlsh.
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
WARNING: pyreadline dependency missing. Install to enable tab completion.
cqlsh>
【问题讨论】:
-
您不应该明确包含 cassandra 驱动程序 - 它在连接器内
-
你能从你的 Cassandra 集群做
nodetool status吗 -
@AlexOtt 您不应明确包含 cassandra 驱动程序 - 它在连接器内。你的意思是我应该删除
compile group: 'com.datastax.cassandra', name: 'cassandra-driver-core', version: '3.0.0'?此外,我还包括了nodetool status的输出。谢谢 -
是的,你需要移除这个依赖——一切都在连接器中
-
你也可以试试
cqlsh 127.0.0.1 9042吗?
标签: scala apache-spark cassandra datastax spark-cassandra-connector