Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么从Cassandra加载数据集失败并导致NullPointerException?_Apache Spark_Apache Spark Sql_Spark Cassandra Connector - Fatal编程技术网

Apache spark 为什么从Cassandra加载数据集失败并导致NullPointerException?

Apache spark 为什么从Cassandra加载数据集失败并导致NullPointerException?,apache-spark,apache-spark-sql,spark-cassandra-connector,Apache Spark,Apache Spark Sql,Spark Cassandra Connector,我正在尝试从Spark读取/写入Cassandra,并使用以下依赖项: "com.datastax.spark" % "spark-cassandra-connector-unshaded_2.11" % "2.0.0-M3", "com.datastax.cassandra" % "cassandra-driver-core" % "3.0.0" 这是代码: import com.datastax.spark.connector._ val sparkConf: SparkConf = ne

我正在尝试从Spark读取/写入Cassandra,并使用以下依赖项:

"com.datastax.spark" % "spark-cassandra-connector-unshaded_2.11" % "2.0.0-M3",
"com.datastax.cassandra" % "cassandra-driver-core" % "3.0.0"
这是代码:

import com.datastax.spark.connector._
val sparkConf: SparkConf = new SparkConf().setAppName(appName)
      .set("spark.cassandra.connection.host", hostname)
      .set("spark.cassandra.auth.username",user)
      .set("spark.cassandra.auth.password",password)

 val spark = SparkSession.builder().config(sparkConf).getOrCreate()
val df = spark
      .read
      .format("org.apache.spark.sql.cassandra")
      .options(Map( "table" -> s"$TABLE", "keyspace" -> s"$KEYSPACE"))
      .load() // This Dataset will use a spark.cassandra.input.size of 128
然而,在尝试spark submit时,我在上面的df…load()行中看到了这一点

Exception in thread "main" java.lang.NullPointerException
    at com.datastax.driver.core.Cluster$Manager.close(Cluster.java:1516)
    at com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:1237)
    at com.datastax.driver.core.Cluster.closeAsync(Cluster.java:540)
    at com.datastax.driver.core.Cluster.close(Cluster.java:551)
    at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:162)
    at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$3.apply(CassandraConnector.scala:149)
    at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$3.apply(CassandraConnector.scala:149)
    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:82)
    at com.datastax.spark.connector.cql.CassandraConnector.withSessionDo(CassandraConnector.scala:110)
    at com.datastax.spark.connector.rdd.partitioner.dht.TokenFactory$.forSystemLocalPartitioner(TokenFactory.scala:98)
    at org.apache.spark.sql.cassandra.CassandraSourceRelation$.apply(CassandraSourceRelation.scala:255)
    at org.apache.spark.sql.cassandra.DefaultSource.createRelation(DefaultSource.scala:55)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:345)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:122)

M3是一个里程碑式的版本,您应该真正使用real release 2.0.2,它是当前最新的版本

您不应该将java驱动程序与Cassandra连接器包含在同一个项目中。除非您在项目内部明确地重新着色,并且仅限专家使用。有关更多详细信息,请参阅

我建议只使用着色工件,并遵循发布的示例

启动使用Spark软件包或组件

//装配

//包裹


M3是一个里程碑式的版本,您应该真正使用当前最新的real release 2.0.2

您不应该将java驱动程序与Cassandra连接器包含在同一个项目中。除非您在项目内部明确地重新着色,并且仅限专家使用。有关更多详细信息,请参阅

我建议只使用着色工件,并遵循发布的示例

启动使用Spark软件包或组件

//装配

//包裹


谢谢您的解释!这些链接起了作用。我撤掉了司机。我现在正在这样做(除了spark core等)://sbt
“com.datastax.spark”%%“spark cassandra连接器”%%“2.0.2”%”,“提供”
//code
val df=spark.read.format(“org.apache.spark.sql.cassandra”).options(映射(“表”->s“$table”,“键空间”->s$keyspace”).load()
而我的jar是一个包含所有依赖项的胖jar。我正在做一件事。但是我又看到了相同的NPE。SparkBuildExamples中的示例是这样说的:“请注意,spark cassandra连接器应该为spark submit命令提供'--packages'标志”。我是否需要这样做,即使是为spark提交?我想这只需要在spark shell中进行。这会导致错误吗?如果是,我的spark submit应该是什么样子的?我从SparkBuildExamples链接中选取了这个示例,现在我正在尝试WriteRead。原来的NPE不见了,我现在得到了这个:
线程“main”java.lang.NoSuchMethodError中的异常:com.datastax.spark.connector.cql.CassandraConnector$.apply(Lorg/apache/spark/SparkContext;)Lcom/datastax/spark/connector/cql/CassandraConnector有什么建议吗?我正在使用上面提到的spark core、spark sql和Cassandra连接器JAR(没有hive,这有关系吗?),您必须使用--packages或--JAR,并提供有关第三方插件(如Cassandra连接器)的详细信息。如果您将spark submit命令粘贴到问题中,如果它失败,这将是一件好事。@RussS非常感谢您的帮助。我能够用你提供的指针解决这个问题!谢谢你的解释!这些链接起了作用。我撤掉了司机。我现在正在这样做(除了spark core等)://sbt
“com.datastax.spark”%%“spark cassandra连接器”%%“2.0.2”%”,“提供”
//code
val df=spark.read.format(“org.apache.spark.sql.cassandra”).options(映射(“表”->s“$table”,“键空间”->s$keyspace”).load()
而我的jar是一个包含所有依赖项的胖jar。我正在做一件事。但是我又看到了相同的NPE。SparkBuildExamples中的示例是这样说的:“请注意,spark cassandra连接器应该为spark submit命令提供'--packages'标志”。我是否需要这样做,即使是为spark提交?我想这只需要在spark shell中进行。这会导致错误吗?如果是,我的spark submit应该是什么样子的?我从SparkBuildExamples链接中选取了这个示例,现在我正在尝试WriteRead。原来的NPE不见了,我现在得到了这个:
线程“main”java.lang.NoSuchMethodError中的异常:com.datastax.spark.connector.cql.CassandraConnector$.apply(Lorg/apache/spark/SparkContext;)Lcom/datastax/spark/connector/cql/CassandraConnector有什么建议吗?我正在使用上面提到的spark core、spark sql和Cassandra连接器JAR(没有hive,这有关系吗?),您必须使用--packages或--JAR,并提供有关第三方插件(如Cassandra连接器)的详细信息。如果您将spark submit命令粘贴到问题中,如果它失败,这将是一件好事。@RussS非常感谢您的帮助。我能够用你提供的指针解决这个问题!
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-hive" % sparkVersion % "provided",
  "com.datastax.spark" %% "spark-cassandra-connector" % connectorVersion % "provided"