8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何使用 scala 从 HDFS 文件夹中获取最新修改的文​​件

Martin Kirk 2月前

91 0

我对 Scala 还很陌生,有谁能帮我解决一个需要获取最新修改日期的文件的情况。有两种情况。考虑 2 个目录,dir1(有...

还很陌生, Scala 有谁能帮我解决我需要获取最新修改日期的文件的情况吗?

有两种情况。考虑两个目录,

  • dir1 (其中包含子目录以及每个子目录中的文件)
  • dir2 (没有子目录,只有文件)

对于场景 1 - 我需要获取最新修改日期目录中具有最新修改日期的文件

对于场景 2 - 我只需要最新修改的最新文件。

请尽可能地帮助我,我尝试使用 java.io 文件处理进行实验,但没有取得任何进展。

adding the code I tried

帖子版权声明 1、本帖标题:如何使用 scala 从 HDFS 文件夹中获取最新修改的文​​件
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Martin Kirk在本站《scala》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这个问题太笼统了,无法在这里回答;你能给出一个更具体的例子来说明你发现的问题吗?是 Scala 编码、算法还是 Java 库本身?

  • ferg 2月前 0 只看Ta
    引用 3

    我正在尝试从 org.apache.spark.sql.Column 类型变量中获取键并将其放入列表中,以便我可以进行一些模式比较。inputFieldMap:org.apache.spark.sql.Column = keys:[custome...

    我正在尝试从 org.apache.spark.sql.Column 类型变量中获取键并将其放入列表中,以便我可以进行一些模式比较。

    inputFieldMap: org.apache.spark.sql.Column = keys:[customerID,country],values[customerID,country]
    
    expected output
    newvariable: list[string]=[customerID,country];
    
  • Tez 2月前 0 只看Ta
    引用 4

    使用 map_keys 函数从数据类型的列中获取列表键 map

    df.selectExpr("map_keys(inputFieldMap) as newvariable")
    
  • 这不是一个编写代码的网站。如果你尝试过并发现了一个具体的问题,那么可以在这里发布,但如果你还没有尝试过,那么请查看文档

  • 添加了上面问题中的代码图像,我试图获取最大时间,但如何获取具有该修改时间的文件?我应该再次迭代检查每个文件的修改时间还是有更好的方法?

  • 此外,您应该将代码作为文本而不是图像包含。如果您在每行开头添加四个空格,它将自动将其格式化为代码(例如,请参阅我的答案)

  • 这是我对嵌套目录执行此操作的(未经测试的)代码:

    def latest(file: File): File =
      file.listFiles.maxByOption(_.lastModified) match {
        case Some(f) => latest(f)
        case None => file
      }
    

    这是尾递归并且将编译为一个简单的循环。

  • 如何访问 scala 匹配表达式之外的变量?即使我将其声明为 var,它也不会返回测试变量的更新值。--更新了问题 val x: Int = 2var v1: St...

    如何访问 scala 匹配表达式之外的变量?即使我将其声明为 var,它也不会返回测试变量的更新值。

    --更新了问题

    val x: Int = 2
    var v1: String = ""
    var v2: String = ""
    x match {
        case 1 => 
           {var v1="testObj1"
            var v2="testobj2"
           }
    }
    println(v1,v2) -- should return testObj1 and testObj2
    
  • 原始方法在空目录上会失败(无限递归),因此我用更好的方法替换了它。这假设 listFiles 在非目录上返回空列表而不是抛出错误。文档对此不清楚。

  • Dog 2月前 0 只看Ta
    引用 11

    检查下面的代码。返回值并分配给测试变量。

    val x: Int = 2
    var test: Int = _
    
    test = x match {
        case 1 =>  10
        case 2 =>  11
    }
    
    println(test)
    test: Int = 11
    
    var (v1, v2) = x match {
      case 1 => ("A", "B")
      case 2 => ("B", "C")
    }
    
    // Exiting paste mode, now interpreting.
    
    v1: String = B
    v2: String = C
    

    或者

    var v1: String = ""
    var v2: String = ""
    
    x match {
        case 1 => {
           v1="testObj1"
           v2="testobj2"
        }
        case 2 => {
           v1="testObj3"
           v2="testobj4"
        }
    }
    
    scala> v1
    res3: String = testObj3
    
    scala> v2
    res4: String = testobj4
    
  • 引用 12

    问题在于您正在 v1 内部 v2 and case ,因此旧变量不会被更新。

    使用赋值比 var 声明更好(更具功能性):

    val (v1, v2) = x match {
      case 1 => ("testObj1", "testobj2")
      case _ => ("default1", "default2")
    }
    
返回
作者最近主题: