记录解决java spark读取python保存的csv文件报错_java spark读取csv文件数据-程序员宅基地

技术标签: python  java  spark  Spark  

csv文件内容如下

Value
/emr.s3.zlh.com/zlh/UserInfoBak/2023/20230418/zbook_20230418_094807.gz

一开始代码如下

Dataset<Row> jsonDs = sparkSession.read().option("inferSchema", true)
				.format("csv")
                .load(flagPath).filter((FilterFunction<Row>) Objects::nonNull);

运行后报错

23/04/18 10:40:36 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.IllegalArgumentException: Field "Value" does not exist.
Available fields: _c0
java.lang.IllegalArgumentException: Field "Value" does not exist.
Available fields: _c0
	at org.apache.spark.sql.types.StructType$$anonfun$fieldIndex$1.apply(StructType.scala:303)
	at org.apache.spark.sql.types.StructType$$anonfun$fieldIndex$1.apply(StructType.scala:303)
	at scala.collection.MapLike$class.getOrElse(MapLike.scala:128)
	at scala.collection.AbstractMap.getOrElse(Map.scala:59)
	at org.apache.spark.sql.types.StructType.fieldIndex(StructType.scala:302)
	at org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema.fieldIndex(rows.scala:187)
	at org.apache.spark.sql.Row$class.getAs(Row.scala:333)
	at org.apache.spark.sql.catalyst.expressions.GenericRow.getAs(rows.scala:166)
	at com.cqvip.jobstream.common.spark.userlog.UniqueUserInfo.main(UniqueUserInfo.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:685)
23/04/18 10:40:36 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: java.lang.IllegalArgumentException: Field "Value" does not exist.
Available fields: _c0
	at org.apache.spark.sql.types.StructType$$anonfun$fieldIndex$1.apply(StructType.scala:303)
	at org.apache.spark.sql.types.StructType$$anonfun$fieldIndex$1.apply(StructType.scala:303)
	at scala.collection.MapLike$class.getOrElse(MapLike.scala:128)
	at scala.collection.AbstractMap.getOrElse(Map.scala:59)
	at org.apache.spark.sql.types.StructType.fieldIndex(StructType.scala:302)
	at org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema.fieldIndex(rows.scala:187)
	at org.apache.spark.sql.Row$class.getAs(Row.scala:333)
	at org.apache.spark.sql.catalyst.expressions.GenericRow.getAs(rows.scala:166)
	at com.cqvip.jobstream.common.spark.userlog.UniqueUserInfo.main(UniqueUserInfo.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:685)
)

怀疑是分隔符问题,因为python指定了"\t",而spark默认是逗号,但是指定分隔符"\t"读取以及修改了python指定的分隔符为逗号都尝试了,作为只有一列的csv文件,显然不是分隔符的问题。

想到spark写出csv默认情况下,使用逗号作为列分隔符,并且没有标题行。所以应该是我读取的时候没有设置第一行为标题行导致,修改测试后果然是这样

修改后代码:

Dataset<Row> jsonDs = sparkSession.read()
                .option("header", "true")
                .option("inferSchema", "true")
                .csv(flagPath).filter((FilterFunction<Row>) Objects::nonNull);
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zlhblogs/article/details/130228660

智能推荐

pso_pso-bp讲解csdn-程序员宅基地

文章浏览阅读2.1k次。微粒群算法(Paticle swarm optimization PSO)源码和程序下载地址2007-04-21 21:29 ProgramsLast checkParticle Swarm OptimizerBibliography Researchers Conferences Link to_pso-bp讲解csdn

2023年6月杭州/广州/深圳NPDP产品经理认证招生简章-程序员宅基地

文章浏览阅读516次。产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业或组织提升其产品开发与管理的能力与成效。产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。提升工作能力:NPDP方法是执行创新的最佳实战,让您迅速获得全球产品开发领域积累的正确原则、方法、流程、模板和工具,使您成为这一领域的专家和领导者。■ 产品生命周期管理与产品退市管理。

QTime中currentTime()的使用方法-程序员宅基地

文章浏览阅读520次。QTime中currentTime()的使用方法QTime是Qt中一个处理时间的类,其成员函数currentTime()是最经常用到函数,下面举例说明该成员函数如何使用。 1. 包含头文件 #include &lt;QTime&gt; 2. 声明一个QTime对象 QTime qtimeObj; 3. 利用currentTime()获取当前时间 ..._qtime::currenttime

C&C++结构实训(国防科大)_第1关:有理数化简-程序员宅基地

文章浏览阅读1.7w次,点赞37次,收藏146次。最后一个借鉴大佬代码,不太熟悉结构函数,需要练熟,c++_第1关:有理数化简

求两个球的体积并_求球的体积并-程序员宅基地

文章浏览阅读1.2k次。两个球和两个圆一样,有三种情况。相交,分离(包括两种情况)对于分离的两种情况,好计算。但是对于相交的情况,不好计算。需要计算球冠的大小。就是这样。昨天晚上牛客上有一个关于这样的题代码如下:#include&lt;bits/stdc++.h&gt;using namespace std;const double PI = acos(-1.0);double x1,y11,z1,r1;..._求球的体积并

Spring与MyBatis集成(XML方式和注解方式)_spring集成mybatis xml与注解-程序员宅基地

文章浏览阅读801次。Spring与MyBatis集成一、事务1. 事务的分类2. 为什么要使用声明式事务3. Spring是如何实现声明式事务的二、spring 和 mybatis 的集成1. 项目结构2. 导包1). spring2). mybatis3). mysql4). pagehelper5). log4j3. 创建db.properties4. 创建log4j.properties5. 通过MyBatis逆向工程生成User、UserMapper、UserMapper.xml1). User2). UserMapp_spring集成mybatis xml与注解

随便推点

GTC 火山引擎线上专场 | 解码字节跳动多场景技术内核及应用-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏2次。活动简介12 月 19 日,GTC 智能增长技术专场,火山引擎将以「智能增长」为主题,为大家带来字节跳动在机器学习领域沉淀的技术经验,智能平台、数据智能、语音识别、联邦学习等场景的前沿应..._字节跳动的核心在于推荐算法,你认为它基于这一核心还可以连接哪些场景?

mac unzip Illegal byte sequence_unzip checkdir error illegal byte sequence-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏3次。mac unzip Illegal byte sequence_unzip checkdir error illegal byte sequence

Yii里文件上传的操作方法(图片修改,在详情上展示,批量上传待续...)-程序员宅基地

文章浏览阅读79次。$model->img= UploadedFile::getInstance($model,'img');if ($model->validate()) {//$model->img->saveAs('uploads/'.$model->img->baseName.'.'.$model->img->extension);$model->..._yii1.1多图上传

ECharts - 极坐标系下的堆叠柱状图_极坐标系下的堆叠柱状图 位置-程序员宅基地

文章浏览阅读7.6k次。极坐标系下的堆叠柱状图链接:https://pan.baidu.com/s/1tSSDIPOmK9J6lXICJC3N1w提取码:0ggb_极坐标系下的堆叠柱状图 位置

【Docker】手把手教你使用Docker安装kafka【详细教程】_docker kafka-程序员宅基地

文章浏览阅读1.2w次,点赞22次,收藏88次。手把手教你使用Docker安装kafka_docker kafka

python模拟提交表单文件_如何用python 模拟表单提交,获取服务器的文件下载链接...-程序员宅基地

文章浏览阅读87次。下个报告,手动下载需要一个个填写提交,文件自动下载,这样操作对于多个对象都要提交一次表单非常麻烦,有没有什么办法模拟表单进行自动提交下载general内容:Request URL:http://www.hw.com.cn/hw-new/d...Request Method:POSTStatus Code:200 OKRemote Address:110.92.233.12:80response h..._python中用requests实现模拟在页面中勾选同意后再提交