小编bel*_*lls的帖子

在Spark Scala应用程序的同一数据框中,将日期列添加到日期列

我有一个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

scala dateadd dataframe apache-spark

6
推荐指数
2
解决办法
8377
查看次数

如何重新配置​​ spark /hadoop 以读取以“_”(下划线)开头的文件?

我知道以“_”和“.”开头的文件 是隐藏文件。并且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选项重新配置并打开“读取隐藏文件功能”?

请帮助我提出您宝贵的建议。谢谢。

hadoop scala amazon-emr hidden-files apache-spark

5
推荐指数
0
解决办法
823
查看次数