【问题标题】:Read csv files from HDFS into R using fread() and grep -- lost column names使用 fread() 和 grep 将 HDFS 中的 csv 文件读入 R - 丢失列名
【发布时间】:2016-08-08 21:36:42
【问题描述】:

我一直在尝试使用 data.table 包将大型 csv 文件从 HDFS 读取到 R 中,因为根据我的经验,它比 rhdfs 包快得多。

我已使用以下命令成功读取整个文件:

data <- fread("/usr/bin/hadoop fs -text /path/to/the/file.csv"), fill=TRUE)

然后,我只想读取包含值“2MS-US”的行。我试着用grep 来做:

data <- fread("/usr/bin/hadoop fs -text /path/to/the/file.csv | grep '2MS-US'"), fill=TRUE)

这会返回正确的行数,但会删除所有标题。它们现在变为“V1”、“V2”等。

根据这个thread,使用grep 时丢失列名的问题已在data.package 1.9.6 中解决,但即使我使用的是1.9.7,我仍然遇到它。对此有什么想法吗?谢谢!

【问题讨论】:

    标签: r data.table hdfs


    【解决方案1】:

    改用sed 解决了这个问题:

    fread("hadoop fs -text /path/to/the/file.csv |sed -n '1p;/2MS-US/p'", fill=TRUE)
    

    1p 部分打印第一行,即标题,因此我能够保留标题以及与字符串匹配的行。

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 2014-09-30
      • 2017-05-17
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多