Лучший подход к развертыванию и реляционализации данных JSON для систем больших данных - PullRequest
0 голосов
/ 01 марта 2020

У меня есть ГБ данных в Nested JSON. Я могу разложить и реляционизировать / сгладить их двумя способами.

Например. из JSON (только образец, реальный JSON имеет гораздо больше полей).

{
    "Device": "ABCD",
    "Family": "FAB",
    "M_Condition": [
        {
            "Label": "AC",
            "Value": "BA"

        },
        {
            "Label": "AD",
            "Value": "AC"
        }
    ],
    "N_Condition": [
        {
            "Label": "ID",
            "Value": "gdr"
        },
        {
            "Label": "Date",
            "Value": "11/18/2019 4:39:26 PM"
        },
        {
            "Label": "Mode",
            "Value": "Normal"
        }
    ],
    "T_Condition": [
        {
            "Label": "Module",
            "Value": "RF"
        },
        {
            "Label": "KT",
            "Value": "MS"
        },
    "Test_Event_Status": "P"
}

У меня есть опция PIVOT для данных, которая увеличит количество столбцов. количество столбцов увеличивается до 1000 +.

Пример:

| DEVICE | FAMILY | M_Condition_Label_AC | M_Condition_Label_AD | N_Condition_LABEL_ID | N_Condition_LABEL_DATE | ....
1. .. .. .. .. 

ИЛИ

Я могу разбить данные, чтобы сгладить их. Например:

|DEVICE | FAMILY | M_CONDITION.LABEL | M_CONDITION.VALUE | N_CONDITION.LABEL | N_CONDITION.VALUE|..
1. .. .. 
2. .. ..
3. .. ..
.
.
12 .. ..

При этом количество сгенерированных строк равно 12 (для каждого элемента JSON будет сгенерировано 12 строк). В реальном случае число может быть больше 300. Я планирую сохранить данные в формате паркета и запросить их с помощью Athena. .

Хотелось бы узнать от экспертов преимущества и недостатки преобразования данных двумя вышеупомянутыми способами, а также узнать, какой метод рекомендован в BigData Analytics Industry.

...