Выровнять столбец структуры Hive или файл avro с помощью pyspark - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть таблица Hive, в которой есть столбец типа данных struct (пример ниже).Таблица создана в файле avro.

Используя pyspark, как я могу сгладить записи, чтобы в каждом столбце я получал простое значение типа данных (не struct, array или list) для загрузки другой таблицы Hive.

Я могу использовать таблицу Hive или файл avro в качестве источника.

Пример данных-

Имя столбца куста: Contract_Data

{"contract":                    
    {"contractcode":"CCC",              
    unit:               
        {"value":"LOCAL",           
        desc:"LOCAL"},          
    segmentlist:                
        {"segment":[            #"segment" is array of struct here
            {"transaction":"1",     
            "plans":        
                {"identifier":[     #"identifier" is array of struct here
                    {"value":"123","desc":"L1"},
                    {"value":"456","desc":"L2"}]
                }   
            }]      
        }           
    },              
plans:                  
    {"listplans":[              #"listplans" is array of struct here
        {"plantype":"M",            
        plandesign:         
            {"value":"PV","desc":"PD"},     
            state:      
                {"value":"ST","desc":"ST"}  
            }]      
    }               
}

1 Ответ

0 голосов
/ 19 ноября 2018

Сначала вы можете прочитать таблицу HIVE как информационный кадр Spark, как показано ниже.

df = spark.table("<DB_NAME>.<Table_Name>")

тогда вы можете взорвать функцию из API Spark Dataframe, чтобы сгладить структуру. Пример кода PFB, который должен работать.

from pyspark.sql.functions import *
df.select(explode("Contract_Data"))

Если структура вложенная, которую я мог видеть в приведенных выше примерах данных, вы можете применить explode несколько раз.

Надеюсь, это поможет.

С уважением,

Neeraj

...