Hive regex serde для многоуровневых данных YAML? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть пользовательский экспорт нескольких таблиц и их столбцов в многоуровневом формате yaml.Пример извлечения изменен с фиктивными значениями:

schemas:
- name: exports
  tables:
  - name: sugar
    description: makes stuff sweet
    active_date: 2019-01-07 00:00:00
    columns:
    - name: color
      type: abcd
    - name: taste
      type: abcd
      description: xyz
      example: 21352352
    - name: structure
      type: abcd
      description: xyzasaa
      example: 10001
  - name: salt
    description: not that sweet.
      makes it salty.
    active_date: 2018-12-18 00:00:00
    columns:
    - name: strength
      type: abcdef
      description: easy to find
      example: 2018-03-03 12:30:00
    - name: color
      type: abcdeffa
      description: not sweet
      example: 21352352
    - name: quality
      type: abcd
      description: how much is needed
      example: 10001

Мне нужно включить эти данные в таблицу улья, используя некоторые serde.Я знаком с jsonSerde, но, к сожалению, этот формат не поддерживается и поэтому ищу альтернативный путь.Может кто-нибудь предложить оптимальный подход?Может ли regexSerde вообще помочь с тем, чего я пытаюсь достичь?

Таблица кустов. Данные могут быть представлены одним из следующих способов:

<style type="text/css">
	table.tableizer-table {
		font-size: 12px;
		border: 1px solid #CCC; 
		font-family: Arial, Helvetica, sans-serif;
	} 
	.tableizer-table td {
		padding: 4px;
		margin: 3px;
		border: 1px solid #CCC;
	}
	.tableizer-table th {
		background-color: #104E8B; 
		color: #FFF;
		font-weight: bold;
	}
</style>
<table class="tableizer-table">
<thead><tr class="tableizer-firstrow"><th>Level 1(name)</th><th>Level 2(name)</th><th>Level 2 (type)</th><th>Level 2 (description)</th></tr></thead><tbody>
 <tr><td>sugar</td><td>color</td><td>abcd</td><td>&nbsp;</td></tr>
 <tr><td>sugar</td><td>taste</td><td>abcd</td><td>xyz</td></tr>
 <tr><td>sugar</td><td>structure</td><td>abcd</td><td>xyzasaa</td></tr>
 <tr><td>salt</td><td>strength</td><td>abcdef</td><td>easy to find</td></tr>
 <tr><td>salt</td><td>color</td><td>abcdeffa</td><td>not sweet</td></tr>
 <tr><td>salt</td><td>quality</td><td>abcd</td><td>how much is needed</td></tr>
</tbody></table>

--- или ---

<style type="text/css">
	table.tableizer-table {
		font-size: 12px;
		border: 1px solid #CCC; 
		font-family: Arial, Helvetica, sans-serif;
	} 
	.tableizer-table td {
		padding: 4px;
		margin: 3px;
		border: 1px solid #CCC;
	}
	.tableizer-table th {
		background-color: #104E8B; 
		color: #FFF;
		font-weight: bold;
	}
</style>
<table class="tableizer-table">
<thead><tr class="tableizer-firstrow"><th>Level 1(name.colum)</th><th>Level 2 (type)</th><th>Level 2 (description)</th></tr></thead><tbody>
 <tr><td>sugar.color</td><td>abcd</td><td>&nbsp;</td></tr>
 <tr><td>sugar.taste</td><td>abcd</td><td>xyz</td></tr>
 <tr><td>sugar.structure</td><td>abcd</td><td>xyzasaa</td></tr>
 <tr><td>salt.strength</td><td>abcdef</td><td>easy to find</td></tr>
 <tr><td>salt.color</td><td>abcdeffa</td><td>not sweet</td></tr>
 <tr><td>salt.quality</td><td>abcd</td><td>how much is needed</td></tr>
</tbody></table>

РЕДАКТИРОВАТЬ: Используя самый простой подход, я смог извлечь ниже:

$ grep -P '(?<=- name: ).*' export.yaml
- name: exports
  - name: sugar
    - name: color
    - name: taste
    - name: structure
  - name: salt
    - name: strength
    - name: color
    - name: quality

но как мне установить отношения отступов, чтобы результат был похож на:

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