spark java中如何在dataset上应用map函数

spark java中如何在dataset上应用map函数,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,我的CSV文件: 年份、公用事业ID、公用事业名称、所有权、州代码、AMR\u计量住宅、AMR\u计量商业、AMR\u计量工业、AMR\u计量传输、AMR\u计量总计、AMR\u计量总计、AMI\u计量住宅、AMI\u计量商业、AMI\u计量工业、AMI\u计量传输、AMI\u计量总计、能源服务住宅、能源服务商业、,能源服务工业、能源服务运输、能源服务总量 2011,34,阿贝维尔市-(南卡罗来纳州),M,南卡罗来纳州,880,14,894,,,,,,,,,,, 2011年,84年,马里兰州C区

我的CSV文件:

年份、公用事业ID、公用事业名称、所有权、州代码、AMR\u计量住宅、AMR\u计量商业、AMR\u计量工业、AMR\u计量传输、AMR\u计量总计、AMR\u计量总计、AMI\u计量住宅、AMI\u计量商业、AMI\u计量工业、AMI\u计量传输、AMI\u计量总计、能源服务住宅、能源服务商业、,能源服务工业、能源服务运输、能源服务总量
2011,34,阿贝维尔市-(南卡罗来纳州),M,南卡罗来纳州,880,14,894,,,,,,,,,,,
2011年,84年,马里兰州C区A&N电气公司,135,25,160,,,,,,,,,,
2011,84,弗吉尼亚州C区A&N电气公司,318932107,0,34000,,,,,,,,,,
2011,97,美国伊利诺伊州C市亚当斯电气公司,8334190,8524
美国威斯康星州华盛顿州亚当斯哥伦比亚电力公司,邮编:335241788709,邮编:36021,,,,,,,,,,
2011年11月18日,亚当斯农村电力合作社有限公司,C,OH,7457,20,,,7477,,,,,,,,,,
2011年12月12日,纽约州M区Arcade村,邮编:3560498100,邮编:4158,,,,,,,,,,
美国明尼苏达州C市Agralite电力公司,邮编:4383227315,邮编:4925,,,,,,,,,,
下面是读取CSV文件的Spark代码:

公共类ReadFile8{
公共静态void main(字符串[]args)引发IOException{
SparkSession session=new SparkSession.Builder().appName(“CsvReader”).master(“local”).getOrCreate();
//本地系统采集的数据
数据集file8Data=session.read().format(“com.databricks.spark.csv”).option(“header”,“true”).load(“file:///home/kumar/Desktop/Eletricaldata/file8_2011.csv");
//将数据帧注册为SQL临时视图
createOrReplaceTempView(“EletricalFile8Data”);
file8Data.show();
}
}

如何使用Java在Spark中应用map函数和flatmap函数?

您可以使用以下代码作为示例:

Dataset<Integer> years = file8Data.map((MapFunction<Row, Integer>) row -> row.<Integer>getAs("YEAR"), Encoders.INT());
Dataset<Integer> newYears = years.flatMap((FlatMapFunction<Integer, Integer>) year -> {
  return Arrays.asList(year + 1, year + 2).iterator();
}, Encoders.INT());
Dataset years=file8Data.map((MapFunction)行->行.getAs(“年”),Encoders.INT();
数据集newYears=years.flatMap((flatMap函数)year->{
返回Arrays.asList(year+1,year+2).iterator();
},Encoders.INT());
如果Encoders.INT()不工作,请尝试此操作


编码器$.MODULE$.INT()

您的预期输出是什么?要使用映射和平面映射功能分析数据,以及任何类型的分析。如果您有任何metirial sparkjava,请发送给我。我的电子邮件。我的电子邮件是:kumara1223@gmail.comnot处理此代码时出错:java.lang.ClassCastException:java.lang.String不能转换为java.lang.Integer这意味着Spark将“年”列视为字符串。将
inferSchema
设置为true,Spark将尝试推断列类型或将上面代码中的
Integer
替换为
String
。我没有任何特定的资料。我建议使用,在这里您可以选择示例语言。另外,应该会有帮助。在doc Material中,没有提供所有函数,只提供了几个示例,如何使用所有函数进行代码。