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
- 如果我将
限制为只包含custId列,那么这样就可以了testDF
- 我在什么地方出错了吗。如何在完整的Rdd上执行连接,而不是仅使用键列进行投影
。
在leftJoinWithCassandraTable之后立即使用
我有,它也描述了RDDAPI…谢谢你提供的信息。这对我也适用。在升级到使用数据帧的直接连接之前,这是最好的方法