小编ans*_*vas的帖子

用于从Rust中的给定路径中提取文件扩展名

我试图从给定的String路径中提取文件的扩展名.

下面这段代码可以工作,但我想知道是否有一个更干净,更惯用的Rust方法来实现这个目的:

use std::path::Path;

fn main() {

    fn get_extension_from_filename(filename: String) -> String {

        //Change it to a canonical file path.
        let path = Path::new(&filename).canonicalize().expect(
            "Expecting an existing filename",
        );

        let filepath = path.to_str();
        let name = filepath.unwrap().split('/');
        let names: Vec<&str> = name.collect();
        let extension = names.last().expect("File extension can not be read.");
        let extens: Vec<&str> = extension.split(".").collect();

        extens[1..(extens.len())].join(".").to_string()
    }

    assert_eq!(get_extension_from_filename("abc.tar.gz".to_string()) ,"tar.gz" );
    assert_eq!(get_extension_from_filename("abc..gz".to_string()) ,".gz" );
    assert_eq!(get_extension_from_filename("abc.gz".to_string()) , "gz");

}
Run Code Online (Sandbox Code Playgroud)

filenames file-extension path rust

7
推荐指数
2
解决办法
2378
查看次数

rdd.repartition() 和 sc.parallelize(data, partitions) 中的分区大小有什么区别

我正在浏览 spark 的文档。我对 rdd.repartition() 函数和我们在 sc.parallelize() 中的上下文初始化期间传递的分区数感到有些困惑。

我的机器上有 4 个内核,如果我 sc.parallelize(data, 4) 一切正常,但是当我 rdd.repartition(4) 并应用 rdd.mappartitions(fun) 有时分区没有数据并且我的功能失败这样的情况。

所以,只是想了解这两种分区方式有什么区别。

python apache-spark rdd

5
推荐指数
1
解决办法
2760
查看次数

标签 统计

apache-spark ×1

file-extension ×1

filenames ×1

path ×1

python ×1

rdd ×1

rust ×1