我有一个dataframedf,columns ("id", "current_date", "days")我正在尝试将" days" 添加到" current_date"并使用spark scala函数创建一个dataframe新的column名为" new_date"的新函数date_add()
val newDF = df.withColumn("new_Date", date_add(df("current_date"), df("days").cast("Int")))
Run Code Online (Sandbox Code Playgroud)
但看起来该函数date_add只接受Int值而不接受columns.在这种情况下如何获得所需的输出?我可以使用任何替代功能来获得所需的输出吗?
spark版本:1.6.0 scala版本:2.10.6
我知道以“_”和“.”开头的文件 是隐藏文件。并且hiddenFileFilter将始终应用。它是在方法内部添加的org.apache.hadoop.mapred.FileInputFormat.listStatus
从研究中,我了解到我们可以使用FileInputFormat.setInputPathFilter来设置我们的自定义PathFilter并且hiddenFileFilter始终处于活动状态。
为此,我创建了一个MyPathFilter类,如下所示:
class MyPathFilter implements PathFilter{
public boolean accept(Path path) {
// TODO Auto-generated method stub
return path.getName();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道在我们读取输入文件之前应该使用这样的东西:
FileInputFormat.setInputPathFilter(job,MyPathFilter.class);
Run Code Online (Sandbox Code Playgroud)
但是我的基于 Spark/Scala 的数据处理应用程序/管道的问题是我们将文件作为文本读取,如下所示:
val spark = context.sparkSession
import spark.implicits._
val rawDF = spark.read
.text(list: _*)
.map { r =>
//do something
}.toDF()
Run Code Online (Sandbox Code Playgroud)
我无法更改我们读取文件的方式,因为它与从文件位置的文件夹嵌套结构中捕获元数据相关联。因此,spark.read在保持完整的情况下,如何确保我也可以读取文件名以“_”(下划线)开头的文件?FileInputFormat.setInputPathFilter在这种情况下如何使用?
我们在 AWS-EMR 上运行我们的作业,所以我们可以FileInputFormat.SetInputPathFilter在创建 EMR 集群时参数化吗?或者我们可以使用spark-submit选项重新配置并打开“读取隐藏文件功能”?
请帮助我提出您宝贵的建议。谢谢。