小编mcm*_*cmc的帖子

Spark:有条件地将列添加到数据框

我正在尝试获取输入数据:

A    B       C
--------------
4    blah    2
2            3
56   foo     3
Run Code Online (Sandbox Code Playgroud)

并根据B是否为空来在末尾添加一列:

A    B       C     D
--------------------
4    blah    2     1
2            3     0
56   foo     3     1
Run Code Online (Sandbox Code Playgroud)

我可以通过将输入数据帧注册为临时表,然后键入SQL查询来轻松完成此操作.

但我真的想知道如何使用Scala方法执行此操作,而不必在Scala中键入SQL查询.

我已经尝试过了.withColumn,但我无法做到我想做的事情.

scala apache-spark apache-spark-sql spark-dataframe

31
推荐指数
1
解决办法
8万
查看次数

如何在Spark中的每一行添加源文件名?

我是Spark的新手,我正在尝试使用它来自的文件名向每个输入行插入一列.

我见过其他人问过类似的问题,但他们使用了所有的答案wholeTextFile,但我正在尝试为更大的CSV文件(使用Spark-CSV库读取),JSON文件和Parquet文件(不仅仅是小文本文件)执行此操作).

我可以使用它spark-shell来获取文件名列表:

val df = sqlContext.read.parquet("/blah/dir")
val names = df.select(inputFileName())
names.show
Run Code Online (Sandbox Code Playgroud)

但这是一个数据帧.我不知道如何将它作为列添加到每一行(如果该结果的排序与初始数据相同,但我认为它总是如此)以及如何将其作为所有输入类型的通用解决方案.

scala apache-spark

10
推荐指数
2
解决办法
1万
查看次数