我有一个看起来像这样的数据框 -
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表中。
我该怎么做?
答案 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()