【发布时间】:2016-09-02 14:18:57
【问题描述】:
这应该很简单,但是....使用 Spark 1.6.1.... 我有 A、B、C 列的 DataFrame #1。带有值:
A B C
1 2 A
2 2 A
3 2 B
4 2 C
然后我创建一个带有新列 D 的新数据框:
DataFrame df2 = df1.withColumn("D", df1.col("C"));
到目前为止一切顺利,但我实际上希望 D 列中的值是有条件的,即:
// pseudo code
if (col C = "A") the col D = "X"
else if (col C = "B") the col D = "Y"
else col D = "Z"
然后我将删除列 C 并将 D 重命名为 C。我尝试查看列函数,但似乎没有任何内容符合要求;我想过使用 df1.rdd().map() 并遍历行,但除了实际上没有设法让它工作之外,我有点认为 DataFrames 的全部意义在于远离 RDD 抽象?
不幸的是,我必须在 Java 中执行此操作(当然,使用 Java 的 Spark 不是最佳的!!)。似乎我错过了显而易见的事情,并且很高兴在提出解决方案时被证明是个白痴!
【问题讨论】:
标签: java apache-spark dataframe apache-spark-sql