加入一个dataframespark java
首先,感谢您抽出时间阅读我的问题。
我的问题如下:在Spark with Java中,我在两个dataframe中加载了两个csv文件的数据。
这些数据框将具有以下信息。
Dataframe机场
Id | Name | City ----------------------- 1 | Barajas | Madrid
Dataframe airport_city_state
City | state ---------------- Madrid | España
我想加入这两个dataframe,使它看起来像这样:
dataframe结果
Id | Name | City | state -------------------------- 1 | Barajas | Madrid | España
其中dfairport.city = dfaiport_city_state.city
但是我不能用语法来澄清所以我可以正确地进行连接。 我如何创建变量的一些代码:
// Load the csv, you have to specify that you have header and what delimiter you have Dataset dfairport = Load.Csv (sqlContext, data_airport); Dataset dfairport_city_state = Load.Csv (sqlContext, data_airport_city_state); // Change the name of the columns in the csv dataframe to match the columns in the database // Once they match the name we can insert them Dfairport .withColumnRenamed ("leg_key", "id") .withColumnRenamed ("leg_name", "name") .withColumnRenamed ("leg_city", "city") dfairport_city_state .withColumnRenamed("city", "ciudad") .withColumnRenamed("state", "estado");
您可以使用带有列名的join
方法来连接两个dataframe,例如:
Dataset dfairport = Load.Csv (sqlContext, data_airport); Dataset
dfairport_city_state = Load.Csv (sqlContext, data_airport_city_state); Dataset
joined = dfairport.join(dfairport_city_state, dfairport_city_state("City"));
还有一个重载版本,允许您将join
类型指定为第三个参数,例如:
Dataset
关于联接的更多信息。
首先,非常感谢您的回复。
我已经尝试了我的两个解决方案,但没有一个工作,我得到以下错误:方法dfairport_city_state(String)未定义类型ETL_Airport
我无法访问数据框的特定列以进行连接。
编辑:已经做了加入,我把这个解决方案放在这里以防其他人帮忙;)
感谢您的一切和最好的问候
//Join de tablas en las que comparten ciudad Dataset joined = dfairport.join(dfairport_city_state, dfairport.col("leg_city").equalTo(dfairport_city_state.col("city")));
- 如何使用Java中的Structured Streaming从Kafka反序列化记录?
- 无法读取工件描述符:IntelliJ
- 在Spark MLlib上使用Java中的Breeze
- 类型不匹配:无法从Java Spark中的Iterator 转换
- 如何更新火花流中的广播变量?
- 计算RDD中的行数
- 初始工作没有接受任何资源; 检查群集UI以确保工作人员已注册并具有足够的资源
- 带有DataFrame API的Apache Spark MLlib在createDataFrame()或read()时会产生java.net.URISyntaxException .csv(…)
- 如何使用java创建一个简单的spark graphframe?