У меня есть некоторые данные теста в моей кассандре. Я пытаюсь извлечь эти данные из искры, но я получаю сообщение об ошибке, как:Не удается подключиться к cassandra от Spark
py4j.protocol.Py4JJavaError: An error occurred while calling o25.load.
java.io.IOException: Failed to open native connection to Cassandra at {127.0.1.1}:9042
Это то, что я сделал до сих пор:
- начал
./bin/cassandra
- созданных тестовых данных с помощью
cql
сkeyspace ="testkeyspace2"
иtable="emp"
и некоторые ключи и соответствующие значения. - Написал standalone.py
Ran следующий
pyspark
команды оболочки.sudo ./bin/spark-submit --jars spark-streaming-kafka-assembly_2.10-1.6.0.jar \ --packages TargetHolding:pyspark-cassandra:0.2.4 \ examples/src/main/python/standalone.py
У Указана ошибка.
standalone.py:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
conf = SparkConf().setAppName("Stand Alone Python Script")
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
loading=sqlContext.read.format("org.apache.spark.sql.cassandra")\
.options(table="emp", keyspace = "testkeyspace2")\
.load()\
.show()
Я также попытался с --packages datastax:spark-cassandra-connector:1.5.0-RC1-s_2.11
, но я получаю ту же ошибку.
Debug:
Я проверил
netstat -tulpn | grep -i listen | grep <cassandra_pid>
и увидел, что он прослушивает порт 9042.
Полный журнал трассировки:
Traceback (most recent call last):
File "~/Dropbox/Work/ITNow/spark/spark-1.6.0/examples/src/main/python/standalone.py", line 8, in <module>
.options(table="emp", keyspace = "testkeyspace2")\
File "~/Dropbox/Work/ITNow/spark/spark-1.6.0/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 139, in load
File "~/Dropbox/Work/ITNow/spark/spark-1.6.0/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
File "~/Dropbox/Work/ITNow/spark/spark-1.6.0/python/lib/pyspark.zip/pyspark/sql/utils.py", line 45, in deco
File "~/Dropbox/Work/ITNow/spark/spark-1.6.0/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o25.load.
: java.io.IOException: Failed to open native connection to Cassandra at {127.0.1.1}:9042
at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:164)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$2.apply(CassandraConnector.scala:150)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$2.apply(CassandraConnector.scala:150)
at com.datastax.spark.connector.cql.RefCountedCache.createNewValueAndKeys(RefCountedCache.scala:31)
at com.datastax.spark.connector.cql.RefCountedCache.acquire(RefCountedCache.scala:56)
at com.datastax.spark.connector.cql.CassandraConnector.openSession(CassandraConnector.scala:81)
at com.datastax.spark.connector.cql.CassandraConnector.withSessionDo(CassandraConnector.scala:109)
at com.datastax.spark.connector.rdd.partitioner.CassandraRDDPartitioner$.getTokenFactory(CassandraRDDPartitioner.scala:176)
at org.apache.spark.sql.cassandra.CassandraSourceRelation$.apply(CassandraSourceRelation.scala:203)
at org.apache.spark.sql.cassandra.DefaultSource.createRelation(DefaultSource.scala:57)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:158)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
at py4j.Gateway.invoke(Gateway.java:259)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:209)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.1.1:9042 (com.datastax.driver.core.TransportException: [/127.0.1.1:9042] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:227)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:82)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1307)
at com.datastax.driver.core.Cluster.getMetadata(Cluster.java:339)
at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:157)
... 22 more
Я что-то не так?
Я действительно новичок во всем этом, поэтому я мог бы использовать некоторые советы. Благодаря!
Что такое настроенный rpc_address и broadcast_rpc_address (если установлен) в cassandra.yaml на вашем узле cassandra? –
rpc_address: localhost, rpc_port: 9160 и broadcast_rpc_address не установлен. – HackCode
А, я уверен, что происходит, что cassandra разрешает localhost как 127.0.0.1 и прислушивается к этому конкретно. Я просто тестировал это на местном уровне, и это, по-видимому, имеет место, по крайней мере, для меня. «cqlsh 127.0.0.1» работает, но «cqlsh 127.0.1.1» этого не делает. Можете ли вы попробовать это и проверить, действительно ли это так? –