scala - 如何在 Scala 数据框中获取文件的创建日期
问题描述
此处解释了如何在 Scala 中打印文件的日期。
我的问题是如何获取包含此信息的变量,该变量可以作为列返回到数据框。我希望允许的任何转换实际上都是不允许的。
我的代码(使用 Scala 2.11):
import org.apache.spark.sql.functions._
import java.nio.file.{Files, Paths} // Needed for file time
import java.nio.file.attribute.BasicFileAttributes
import java.util.Date
def GetFileTimeFunc(pathStr: String): String = {
// From: https://stackoverflow.com/questions/47453193/how-to-get-creation-date-of-a-file-using-scala
val FileTime = Files.readAttributes(Paths.get(pathStr), classOf[BasicFileAttributes]).creationTime;
val JavaDate = Date.from(FileTime.toInstant);
return(JavaDate.toString())
}
@transient val GetFileTime = udf(GetFileTimeFunc _)
val filePath = "dbfs:/mnt/myData/" // location of data
val file_df = dbutils.fs.ls(filePath).toDF // Output columns are $"path", $"name", and $"size"
.withColumn("FileTimeCreated", GetFileTime($"path"))
display(file_df)//.select("name", "size"))
输出:
SparkException: 无法执行用户定义的函数($anonfun$2: (string) => string)
出于某种原因,Instant 不允许作为列类型,因此我不能将其用作返回类型。对于 FileTime、JavDate 等也是如此。
解决方案
推荐阅读
- reactjs - 错误:找不到模块“。” 将图像传递给子组件时
- ios - UIDocument 保存错误:无法获取属性值
- javascript - 同步检索随机数量的记录 ID,更改按钮文本并从“服务器”异步检索相应记录
- javascript - 从对话框内的角度材料表单提交
- angularjs - Angular Js - select dropdown becomes empty some times on page refresh , why?
- c# - 使用 ElasticSearch Nest 索引动态对象 - StackOverflow 异常
- json - 如何在 Dataweave 中调试 MAP 函数?
- symfony - Symfony,为什么使用`@`?
- sql - 递归跟踪客户状态(Presto SQL)
- redis - redis ZRANGEBYLEX 和 ipv6