gpt4 book ai didi

java - 我可以将 RDD 转换为 Dataframe,以便将这些 POJO 写入具有与 POJO 相同属性名称的表中吗?

转载 作者:行者123 更新时间:2023-11-30 01:56:57 28 4
gpt4 key购买 nike

根据Convert Spark DataFrame to Pojo Object的回复我了解到 DataframeDataset<Row> 的别名.

我目前计算了 JavaPairRDD<CityCode, CityStatistics>哪里CityStatistics是一个 POJO,包含成员的 getter 和 setter,例如: getCityCode() , getCityName() , getActivityCode() , getNumberOfSalaried() , getNumberOfCompanies() ...

一个Liquibase脚本创建了一个统计表,其中存在这些字段( CITYCODECITYNAMEACTIVITYCODE ...)。我只需写记录即可。

什么是(或在此之前:有没有)干净的方法可以从我的JavaPairRDD<CityCode, CityStatistics> citiesStatisticsRDD中做类似的事情? ?
citiesStatisticsRDD.values() => DataSet<CityStatistics> => DataSet<Row> (= DataFrame) => 通过数据帧方法在 JDBC 连接上写入?

谢谢!

最佳答案

首先,您必须将 JavaPairRDD 转换为 RDD,因为 .createDataset() accepts RDD<T> not JavaRDD<T>JavaRDD是 RDD 的包装器,以便使 Java 代码的调用更容易。它内部包含RDD,可以使用.rdd()访问

JavaRDD cityRDD = citiesStatisticsRDD.map(x -> x._2);
Dataset<CityStatistics> cityDS = sqlContext.createDataset(cityRDD.rdd(), Encoders.bean(CityStatistics.class))

现在,如果您希望将整个城市StatisticsRDD转换为数据集:将JavaPairRDD转换为RDD,然后使用编码器

Dataset<Row> cityDS = sqlContext.createDataset(citiesStatisticsRDD.values().rdd(), Encoders.bean(CityStatistics.class)).toDF();

关于java - 我可以将 RDD<POJO> 转换为 Dataframe,以便将这些 POJO 写入具有与 POJO 相同属性名称的表中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54107074/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com