提问者:小点点

Apache火花:如何插入数据列与空值dataFrame使用Java


我必须使用DataFrame2将DataFrame1中可用的值插入到具有空值的列之一中。基本上更新DataFrame2中的列。

两个数据帧都有2个公共列。

有没有办法用Java做同样的事情?或者可以有不同的方法?

样本输入:

1)文件1. csv

BILL_ID,BILL_NBR_TYPE_CD,BILL_NBR,VERSION,PRIM_SW
0501841898,BIN     ,404154,1000,Y
0681220958,BIN     ,735332,1000,Y
5992410180,BIN     ,454680,1000,Y
6995270884,SREBIN  ,1000252750295575,1000,Y

这里BILL_ID是系统id,BILL_NBR是外部id。

2)文件2. csv

TXN_ID,TXN_TYPE,BILL_ID,BILL_NBR_TYPE_CD,BILL_NBR
01234, ABC     ,"     ",BIN     ,404154
22365, XYZ     ,"     ",BIN     ,735332
45890, LKJ     ,"     ",BIN     ,454680
23456, MPK     ,"     ",SREBIN  ,1000252750295575

样本输出

如下所示BILL_ID值应该填充在File2. csv

01234, ABC     ,501841898,BIN     ,404154
22365, XYZ     ,681220958,BIN     ,735332
45890, LKJ     ,5992410180,BIN     ,454680
23456, MPK     ,6995270884,SREBIN  ,1000252750295575

我已经创建了两个DataFrame并将两个文件的数据加载到其中,现在我不确定如何继续。

编辑

基本上,我想清楚以下三个步骤:

  1. 如何从File2. csv获取BILL_NBR和BILL_NBR_TYPE_CD值?

对于这一步,我写了:file2Df.select("BILL_NBR_TYPE_CD","BILL_NBR");

如何获得BILL_ID值从File1. csv基于取回的值在步骤1?

如何在File2. csv中相应地更新BILL_ID值?

我是新来的,如果有人能给我指点,我将不胜感激。


共1个答案

匿名用户

您需要根据BILL_NBR列连接两个表。

假设:BILL_NBR之间存在一对一的关系BILL_ID列。

假设您的File1. csv和File2.csv的数据帧名称分别为file1DFfile2DF,以下内容应该适合您:

Dataset<Row> file1DF = file1DF.select("BILL_ID","BILL_NBR","BILL_NBR_TYPE_CD");
Dataset<Row> file2DF = file2DF.select("TXN_ID","TXN_TYPE","BILL_NBR_TYPE_CD","BILL_NBR");
Dataset<Row> file2DF = file2DF.join(file1DF, file1DF("BILL_NBR","BILL_NBR_TYPE_CD"));

注意:我没有资源通过运行上述代码来测试它。如果您遇到任何编译时或运行时错误,请告诉我。