热门标签 | 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就行了!


推荐阅读
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
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社区 版权所有