使用 java Spark 从 csv 读取列

2024-04-12

我尝试用java和spark读取csv。

现在我这样做:

    String master = "local[2]";
    String csvInput = "/home/username/Downloads/countrylist.csv";
    String csvOutput = "/home/username/Downloads/countrylist";

    JavaSparkContext sc = new JavaSparkContext(master, "loadwholecsv", System.getenv("SPARK_HOME"), System.getenv("JARS"));

    JavaRDD<String> csvData = sc.textFile(csvInput, 1);
    JavaRDD<List<String>> lines = csvData.map(new Function <String, List<String>>() {
        @Override
        public List<String> call(String s) {
            return new ArrayList<String>(Arrays.asList(s.split("\\s*,\\s*")));
        }
    });

所以我将 csv 文件的所有“行”作为我的 RDD 中的一行。我还编写了这个方法来获取列:

public static JavaRDD<String> getColumn (JavaRDD<List<String>> data, final int index)
{
    return data.flatMap(
        new FlatMapFunction <List<String>, String>() 
        {
            public Iterable<String> call (List<String> s) 
            {
                return Arrays.asList(s.get(index));
            }
        }
    );
}

但后来我想对列进行许多转换并更改列的位置等。因此,将 RDD 中的列填充为数组列表而不是行会更容易。

有谁知道如何实现这一目标?我不想多次调用“getColumn()”。

如果你能帮助我那就太好了。

解释:我的 csvData 看起来像这样:

one, two, three
four, five, six
seven, eight, nine

我的 RDD 线路如下所示:

[one, two, three]
[four, five, six]
[seven, eigth, nine]

But我要这个:

[one, four, seven]
[two, five, eight]
[three, six, nine]

要进行基于映射缩减的矩阵转置(这基本上就是所要求的),您将继续执行以下操作:

  1. 将您的行转换为索引元组:(提示:使用 zipWithIndex 和 map)

    [(1,1,one), (1,2,two), (1,3,three)]
    [(2,1,four), (2,2,five), (2,3,six)]
    [(3,1,seven), (3,2,eigth), (3,3,nine)]
    
  2. 将列作为键添加到每个元组:(提示:使用映射)

    [(1,(1,1,one)), (2,(1,2,two)), (3,(1,3,three))]
    [(1,(2,1,four)), (2,(2,2,five)),(3,(2,3,six))]
    [(1,(3,1,seven)), (2,(3,2,eigth)), (3,(3,3,nine))]
    
  3. 按键分组

    [(1,[(3,1,seven), (1,1,one), (2,1,four)])]
    [(2,[(1,2,two), (3,2,eigth), (2,2,five)])]
    [(3,[,(2,3,six),(1,3,three), (3,3,nine))])]
    
  4. 按顺序对值进行排序并删除索引工件(提示:地图)

    [ one, four, seven ]
    [ two, five, eigth ]
    [ three, six, nine ]
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 java Spark 从 csv 读取列 的相关文章

随机推荐

  • 生成谷歌地图图像[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想允许我的网站的最终用户生成谷歌地
  • 如何使用Logback以JSON方式登录?

    我是 SLF4J 和 Logback 的新手 我正在尝试记录以下 API 的每个请求和响应link https pivotal io de application transformation recipes observability r
  • 内容可编辑和非按钮元素

    如果使用按钮 我可以轻松地对内容可编辑的选择执行 execcommand 但是使用任何其他元素都会失败 http jsbin com atike edit http jsbin com atike edit 为什么会这样以及如何使用 div
  • 具有通用向量和对类型的对向量,模板的模板

    我想将一个成对的向量传递给一个函数 实际的向量实现以及对的类型应该是模板参数 我想到了这样的事情 template
  • jquery - firefox 中的 event.preventDefault()

    我有问题event preventDefault 在 Firefox 中 它不起作用 这是 jquery 代码 facebook del 1 click function event preventDefault var selector
  • MVC(模型-视图-控制器)——能用简单的术语解释一下吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要向一位不太懂技术的经理解释 MVC 模型 视图 控制器 概念 但遇到了麻烦 问题是解释需要处于 你的奶奶会明白的 水平 例如即使是相当简单的解释
  • 如何快速发送自动短信? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的应用程序中自动发送短信 我怎样才能快速做到这一点 我使用 MFMessageComposeViewController 发送
  • 对 Map 列表进行排序

    我有一个像这样创建的列表变量 List
  • 观察者 - 显式指定感兴趣的修改 - JAVA 实现

    I asked here https stackoverflow com questions 65198966 observer pattern observe attributes independently当我需要通知时我应该如何处理这
  • 为什么“System.out.println”在 Android 中不起作用?

    我想在控制台中打印一些内容 以便我可以调试它 但由于某种原因 我的 Android 应用程序中没有打印任何内容 那我该如何调试呢 public class HelloWebview extends Activity WebView webv
  • Angular 2 引导选项 - AOT 与 JIT

    刚开始使用 Angular 2 Angular 2 中的各种 Bootstrapping 选项有哪些 为什么当我进行更改并刷新时 index html 只需要很少的时间来检索 HTML 标记 它们之间的区别 有两种选择 动态引导 使用的编译
  • 如何为 Debian/Ubuntu 打包 Mono 应用程序

    是否有任何用于为 Debian Ubuntu 打包 Mono 应用程序的指南或工具 比如将应用程序附带的程序集放在哪里等 Mono 有一些关于打包的一般准则 但这些准则并非特定于 Debian Ubuntu 它们的做法可能有所不同 http
  • C:将x86指令放入数组并执行它们[重复]

    这个问题在这里已经有答案了 有没有办法将处理器指令放入数组中 使其内存段可执行并将其作为简单函数运行 int main char myarr 13 0x90 0xc3 void myfunc void myarr myfunc return
  • Google Calendar API - 通过服务帐户访问自己的日历

    我想访问 Google Calendar API 以使用 Python 插入条目 我创建了一个服务帐号在Google API控制台上 添加私钥 下载它 但是 当我尝试修改同一帐户上的任何日历时 我收到以下错误消息 读书作品 Code is
  • scala 框架中支持 PostgreSQL 特定的 array_agg 函数吗?

    是否有一些 scala 关系数据库框架 anorm squeryl 等 使用类似 postgres 的聚合器在分组后生成列表 或者至少模拟其使用 我期望有两个层次的实施 一个 标准 的 其中至少任何带有 array agg 的 SQL 分组
  • 我的 Rails 应用程序的捆绑包安装冻结

    有时 在使用 Rails 应用程序时 运行bundle install命令在处理 Rails Gemfile 时冻结 我尝试过清除缓存 但没有任何改善 请务必仔细检查并确保您声明的是 Rails 版本 如果不声明版本 Bundler 最终可
  • 将值传递给 Android 中的自定义视图

    Cheers 我有一个接收用户输入 2 个数字 宽度和高度 的应用程序 理论上根据该输入 我有一个应该绘制网格 宽度和高度 的自定义视图 Note 应在视图尝试绘制自身之前接收这两个值 这两个值不是恒定的 因此我认为 XML 方法没有帮助
  • 在 R 中使用 igraph 获取连接组件

    我想找到一张图的所有连接组件 其中组件具有多个元素 使用clusters给出不同集群的成员资格并使用cliques不给出连通分量 这是后续 R中列表的多重交集 https stackoverflow com questions 304065
  • C++ #include 语义

    这是同一预处理指令的多个问题 1 或 除了 MSDN 中找到的信息之外 include 指令 C C https msdn microsoft com en us library 36k2cdd4 aspx 1 a 这两种表示法有什么区别
  • 使用 java Spark 从 csv 读取列

    我尝试用java和spark读取csv 现在我这样做 String master local 2 String csvInput home username Downloads countrylist csv String csvOutpu