Delta Update и вставка с потоковой передачей файлов из HDFS - PullRequest
0 голосов
/ 08 мая 2019

Изначально у меня есть полный файл для таблицы sap MCHB (около 50 ГБ данных), который выглядит как

<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 минут я получаю дельта-файлы для одной и той же таблицы. и в дельте может быть изменение в qty для KEY, или может быть добавлено новое qty, соответствующее 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>

ЗАКЛЮЧИТЕЛЬНЫЙ СТОЛ ПОСЛЕ СЛИЯНИЯ, ПОЛНОГО С DELTA (около 50 ГБ)

<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

эти qtys продолжают обновляться или может появиться новая запись, соответствующая matnr, в новых дельта-файлах.

полный размер файла (приблизительно) - 50 ГБ размер дельта-файла (приблизительно) -10 ГБ

Может ли кто-нибудь помочь мне с этой проблемой, если это возможно сделать с помощью потоковой передачи искры или любым другим способом ее решения. Существует также ограничение по времени на обработку дельта-файлов (около 1 минуты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...