Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 Spark Full Rdd joinWithCassandraTable java.lang.IllegalArgumentException:要求失败:无效行大小:代替 我目前正在尝试将spark数据帧连接到cassandra表 不幸的是,我们无法立即升级到新的Datastax connector 2.5.0并使用直接连接 因此,我正在尝试Rdd方法,使用现有的与Cassandratable_Apache Spark_Cassandra_Cassandra 3.0_Spark Cassandra Connector - Fatal编程技术网

Apache spark Spark Full Rdd joinWithCassandraTable java.lang.IllegalArgumentException:要求失败:无效行大小:代替 我目前正在尝试将spark数据帧连接到cassandra表 不幸的是,我们无法立即升级到新的Datastax connector 2.5.0并使用直接连接 因此,我正在尝试Rdd方法,使用现有的与Cassandratable

Apache spark Spark Full Rdd joinWithCassandraTable java.lang.IllegalArgumentException:要求失败:无效行大小:代替 我目前正在尝试将spark数据帧连接到cassandra表 不幸的是,我们无法立即升级到新的Datastax connector 2.5.0并使用直接连接 因此,我正在尝试Rdd方法,使用现有的与Cassandratable,apache-spark,cassandra,cassandra-3.0,spark-cassandra-connector,Apache Spark,Cassandra,Cassandra 3.0,Spark Cassandra Connector,这是我的示例代码 # Cassandra Table Definition custId: text PRIMARY KEY custName: text custAddress: text val testDF = Seq(("event-01", "cust-01"), ("event-02", "cust-02")).toDF(("eventId", "custId"

这是我的示例代码

# Cassandra Table Definition 

custId: text PRIMARY KEY
custName: text
custAddress: text

val testDF = Seq(("event-01", "cust-01"), ("event-02", "cust-02")).toDF(("eventId", "custId"))

val resultRdd = testDF
    .rdd
    .leftJoinWithCassandraTable(
      keyspaceName = "my_key_space",
      tableName = "cust_table",
      selectedColumns = AllColumns,
      joinColumns = SomeColumns("custId")
    )
    .map { case (sparkRow, cassandraRow) =>
      val resultStruct = cassandraRow
        .map(r => Row.fromSeq(r.columnValues))
        .orNull
      Row.fromSeq(sparkRow.toSeq :+ resultStruct)
    }
  • 这将抛出一个java.lang.IllegalArgumentException:requirement失败:无效的行大小:2而不是1
  • 如果我将
    testDF
    限制为只包含custId列,那么这样就可以了
  • 我在什么地方出错了吗。如何在完整的Rdd上执行连接,而不是仅使用键列进行投影
您需要在(SomeColumns(“custId”)上使用
在leftJoinWithCassandraTable之后立即使用


我有,它也描述了RDDAPI…

谢谢你提供的信息。这对我也适用。在升级到使用数据帧的直接连接之前,这是最好的方法