热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flink使用java实现读取csv文件简单实例

Flink使用java实现读取csv文件简单实例首先我们来看官方文档中给出的几种方法:首先我们来看官方文档中给出的几种方法:第一种:Da

Flink使用java实现读取csv文件简单实例

    • 首先我们来看官方文档中给出的几种方法:


首先我们来看官方文档中给出的几种方法:

第一种:
DataSet> csvInput = env.readCsvFile(“hdfs:///the/CSV/file”)
.types(Integer.class, String.class, Double.class);

第二种:
DataSet> csvInput = env.readCsvFile(“hdfs:///the/CSV/file”)
.includeFields(“10010”)
.types(String.class, Double.class);
第三种:
DataSet> csvInput = env.readCsvFile(“hdfs:///the/CSV/file”)
.pojoType(Person.class, “name”, “age”, “zipcode”);

其中第一种和第二种比较类似,无非就是后面要使用types定义接受的数据类型,对于includeFields() 方法,里面有两种传参方式,一种是includeFields(“10010”),另一种是includeFields(true,false。。。)。表示我们对于这个文件需要第几列,就写上1或者true即可,但是一定要注意一定要对应上即可

这里我们演示第三种,并且扩展一些参数的使用:
第三种是用一个POJO类型来接受数据,所以我们一定先要定义一个POJO的类,这里有很坑爹的地方就是,我们在定义属性之后,一定要加上这三个东西,
1.getter,setter方法
2.construct构造器
3.还有就是一个空的构造器,不带任何参数,这个一定要加上,否则java不识别这是一个POJO
4.把tostring方法也加上
其实我们文件中的内容如下:

name,age,add
fanglei,20,nishi
liujun,29,lalala,
woshi,18,tashi

但是我们假设不需要中间那一列,所以我们定义的POJO只有两个属性!

public class newPerson {private String name;private String address;public newPerson(){}public newPerson(String name, String address) {this.name = name;this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "newPerson{" +"name='" + name + '\'' +", address='" + address + '\'' +'}';}

直接上例子

public class JavaDataSetDataSourceApp {public static void main(String[] args) throws Exception {ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();csvfile(env);}public static void csvfile(ExecutionEnvironment env) throws Exception {String filePath = "C:\\Users\\77051\\Desktop\\hello.csv";DataSet csvInput = env.readCsvFile(filePath).fieldDelimiter(",").ignoreFirstLine().includeFields(true,false,true).pojoType(newPerson.class,"name","address");csvInput.print();}
}

fieldDelimiter(",")表示分隔符
ignoreFirstLine()表示是否忽略第一行
includeFields(true,false,true)表示不需要第二列
pojoType(newPerson.class,“name”,“address”);表示数据类型是newPerson,使用后面这两个属性

结果输出

newPerson{name='woshi', address='tashi'}
newPerson{name='fanglei', address='nishi'}
newPerson{name='liujun', address='lalala'}

但是有一个问题就是,当我的POJO中如果定义多了一个属性,用这种方法读取的话,结果也会把所有的age读出来,但是全部赋了0 结果如下:
Person{name=‘fanglei’, age=0, address=‘nishi’}
Person{name=‘liujun’, age=0, address=‘lalala’}
Person{name=‘woshi’, age=0, address=‘tashi’}

所以解决方法其实很简单,重写tostring方法即可,不要输出age就行了!


推荐阅读
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文讨论了如何根据特定条件动态显示或隐藏文件上传控件中的默认文本(如“未选择文件”)。通过结合CSS和JavaScript,可以实现更灵活的用户界面。 ... [详细]
  • 深入理解 JMeter 定时器
    本文详细介绍了JMeter中定时器的功能和使用方法,探讨了其在性能测试中的重要性,并结合实际案例解释了如何合理配置定时器以模拟真实的用户行为。文章还涵盖了定时器的执行顺序及其与其他元件的相互作用。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • Python并行处理:提升数据处理速度的方法与实践
    本文探讨了如何利用Python进行数据处理的并行化,通过介绍Numba、多进程处理以及Pandas DataFrame上的并行操作等技术,旨在帮助开发者有效提高数据处理效率。 ... [详细]
  • 本文介绍了K近邻分类器的实现及其在工程与科学研究中的广泛应用。该算法采用欧几里得距离作为相似度量标准,并提供了一个包含两个预设聚类示例的CSV文件,旨在通过这些聚类对新的数据点进行分类。 ... [详细]
  • 本文详细探讨了如何在 SparkSQL 中创建 DataFrame,涵盖了从基本概念到具体实践的各种方法。作为持续学习的一部分,本文将持续更新以提供最新信息。 ... [详细]
author-avatar
北路新华
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有