【发布时间】:2018-02-21 01:46:23
【问题描述】:
我正在将 SQL 迁移到 Cassandra,但在将多列合并为一列时遇到问题。例如,假设我有一个可以参加一场或多场比赛的人。我目前每场比赛都有 0 或 1。我怎样才能将它组合成一个单独的列作为一个集合?
SQL Schema
+----------------------------------+
- R_White R_Af_American R_Asian -
- 1 1 1 -
- 0 1 1 -
- 1 0 1 -
- 0 1 0 -
+----------------------------------+
Cassandra Temp Desired Schema
+-------------------------------------------------------------------+
- R_White R_Af_American R_Asian Race -
- 1 1 1 ["White","Af American", "Asian"]-
- 0 1 1 ["Af American", "Asian"] -
- 1 0 1 ["White", "Asian"] -
- 0 1 0 ["Af American"] -
+-------------------------------------------------------------------+
由于我正在从 csv 读取数据,因此我计划按原样从 SQL 将表读取到 Spark,执行合并(进入 Race 列),然后删除除新 Race 列之外的所有这些列。
我一直在链接 .withColumn() 以对数据进行其他数据操作,但这似乎不适合 when(col("R_White") === 1,不知何故_add_to_set).otherwise(...) 模式.任何帮助将不胜感激!谢谢!
【问题讨论】:
-
你能提供表的架构以及你想添加什么到集合中吗?
-
以上这个是不是更清楚了?我编辑了表格并添加了对我的场景的更多解释
-
Tzach 已经回答过了。这没有帮助吗?
标签: sql scala apache-spark cassandra