如何从spark中的数据框中将集类型插入到cassandra中

时间:2017-08-07 17:48:01

标签: dataframe cassandra set

我有一个看起来像这样的数据框 -

when(urlRequest.post[Map[String, Seq[String]]](any())(any(), any())
  .thenReturn(Future.successful(badOAuthResponse))

我试图在cassandra中保存数据,其中有一个名为Address的字段,其类型为Set。现在我想保存地址,该地址是与地址标记关联的所有字段的组合。所以新的Dataframe看起来像 -

+-------------+---------------+-----------------+-------------+-------------+
| Address_Type|    Address_Zip|     Address_City|         Name|           ID|
+-------------+---------------+-----------------+-------------+-------------+
|         HOME|         141101|           Nevada|       George|       SO-123|
+-------------+---------------+-----------------+-------------+-------------+
|       OFFICE|         123561|               LA|       George|       SO-123|
+-------------+---------------+-----------------+-------------+-------------+
|         HOME|         141234|         New York|         Jane|       SC-128|
+-------------+---------------+-----------------+-------------+-------------+
|         BILL|         111009|             UTAH|         Jane|       SC-128|
+-------------+---------------+-----------------+-------------+-------------+

我可以轻松地将它保存到cassandra表中。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

所需要做的就是将DataFrame与Cassandra表匹配。因此,如果要插入类型为Set的Cassandra表。您只需要一个数据框,其架构包含Array类型的列,其中这些行的内部结构与Address类型匹配。

所以在你的情况下,数据框应该是这样的 | Name | ID | Addresses Array<Address> | 哪个会匹配一个cassandra表 | Name String, ID String, Addresses Set<Addresses>|

使用匹配命令即可 df.write.format("org.apache.spark.sql.cassandra").options(...).save()