我正在尝试获取输入数据:
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
,但我无法做到我想做的事情.
我是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)
但这是一个数据帧.我不知道如何将它作为列添加到每一行(如果该结果的排序与初始数据相同,但我认为它总是如此)以及如何将其作为所有输入类型的通用解决方案.