增量更新和从HDFS插入文件流

时间:2019-05-08 07:21:31

标签: apache-spark

最初,我有完整的MCHB sap表文件(大约50 gb数据),看起来像

<table><tr>
<td>MANDT  </td>  
<td>MATNR	</td>  
<td>WERKS </td> 
<td>LGORT</td>  
<td>CHARG  </td>
<td>QTY</td></tr>
<tr><td>MA1	     </td><td>    MT1	</td><td>  W1	    </td><td>L1	    </td><td>C1	    </td><td>100 </td></tr>
<tr><td>MA1	     </td><td>    MT1	</td><td>  W1	    </td><td>L2	    </td><td>C2	    </td><td>200 </td></tr>
<tr><td>MA1	     </td><td>    MT1	</td><td>  W1	    </td><td>L3	    </td><td>C1	    </td><td>300 </td></tr>
<tr><td>MA2	     </td><td>    MT2	</td><td>  W2	    </td><td>L1	    </td><td>C1	    </td><td>100 </td></tr>
<tr><td>MA2	     </td><td>    MT2	</td><td>  W2	    </td><td>L3	    </td><td>C2	    </td><td>200 </td></tr>
<tr><td>MA3	     </td><td>    MT2	</td><td>  W2	    </td><td>L1	    </td><td>C1	    </td><td>100 </td></tr>
<tr><td>MA4	     </td><td>    MT2	</td><td>  W2	    </td><td>L3	    </td><td>C2	    </td><td>300 </td></tr>
</table>

MANDT,MATNR,WERKS,LGORT,CHARG是此表的主键。

然后我需要针对MATNR,WERKS在此表上进行汇总操作

最终表如下

<table>
<tr><td>MATNR</td>  <td>	   WERKS  </td>    <td> QTY </td></tr>
<tr><td>MT1	 </td>  <td>       W1	  </td>    <td> 600 </td></tr>
<tr><td>MT2  </td>	<td>       W2	  </td>    <td> 700 </td></tr>
</table>

之后,我每15分钟收到同一张表的增量文件 并且可以在Delta中更改KEY的数量,也可以根据MATNR,WERKS添加新的数量

DELTA FILE(around 10 gb)

 <table>
<tr><td>MANDT</td> MATNR<td> WERKS </td > <td>LGORT</td>  <td>CHARG  </td>  <td>QTY</td></tr>

<tr><td>MA1	</td>    <td> MT1</td>   <td>W1</td>	<td>    L2</td><td>	    C2	</td> <td>    100</td></tr>
<tr><td>MA4	</td>    <td> MT2</td>   <td>W2</td>	<td>    L4</td><td>	    C5	</td> <td>    400</td></tr>
</table>

完全合并DEL之后的最终桌子(大约50 gb)

<table>
<tr><td>MATNR  </td><td>WERKS  </td><td>QTY  </td></tr>
<tr><td>MT1	   </td><td>W1	   </td><td>500  </td></tr>
<tr><td>MT2	   </td><td>W2	   </td><td>1100 </td></tr>
</table>

对于MT2,W2,添加了400数量的新密钥,因此700 + 400 = 1100 对于MT1,W1,现有密钥中有更新,因此600-200 + 100 = 500

这些数量不断更新,或者在新的增量文件中可能存在与matnr,werks相对应的新条目。

完整文件大小(大约)-50 gb 增量文件大小(大约)-10 gb

如果有可能通过火花流传输或任何其他方法来解决此问题,谁能帮助我解决这个问题。 处理增量文件也有时间限制(接近1分钟)。

0 个答案:

没有答案