Прочитать динамический файл Yaml через Scala Spark - PullRequest
0 голосов
/ 04 октября 2019

Нужна помощь, у меня есть файл YAML. Нужно прочитать этот файл yml и написать соответствующий код Scala. Ниже мой файл yml.

после прочтения профиля. Сначала предположим, что «SubscriberProfilePanel» - это имя моей таблицы, затем «highUtilizationScoreData» - это имя моего столбца, а «count» - это условие, для которого я написал функцию, к которой нужно применить. Поэтому в основном я должен прочитать этот динамический файл Yaml, так как количество полей, таких как таблица, поле может быть больше или меньше. Исправлено имя SubscriberProfilePanel, скопируйте или посчитайте все условия. Так может кто-нибудь помочь мне, как прочитать динамический файл YML через Java или Scala в спарк?

profile: 
    SubscriberProfilePanel: 
        activationDate: 
            copy: 
                table: SubscriebrAudirLog
                field: activationDateCust
        highUtilizationScoreData: 
            count: 
                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                field: subscriber_key
                filters:
                    operator: AND
                    1: 
                        dateCompare: 
                            date1: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: effective_date_ge
                            operator: <
                            date2: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: currentBillCycleStartDate
                    2: 
                        dateCompare: 
                            date1: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: effective_date_ge
                            operator: <
                            date2: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: threeBillCyclesStartDate
                                origin: destination
                        numCompare: 
                            num1: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: threshold
                            operator: >=
                            num2: 
                                table: FactADHPostpaidSubscriptionDataThresholdLimitSource
                                field: 80
    AccountProfilePanel: 
    HomeProfilePanel: 
    PrepaidProfilePanel: 

Я пытался, но не получал хороший код чтения YML, который может прочитать все значения, чтобы я мог передатьэто в переменную в моем коде Scala.

Я написал код ниже, я могу читать и анализировать файл YML, но как я могу получить все значения внутри каждой переменной, чтобы я мог вызвать мойметоды соответственно. Хотелось бы проверить, есть ли здесь «копия» или нет, тогда проверит его поле и имя таблицы.

код такой, как показано ниже


var yamlData = 
   spark.sparkContext.wholeTextFiles( "/Users/ayushgup/Desktop/SUN_DV/data_validation.yml")
     .map(x => x._2)
     .collect()(0)

val yaml = new Yaml()
var config = 
      yaml.load(yamlData)
        .asInstanceOf[java.util.Map[String, String]]
var item = config.values().contains("activationDate") //.get("SubscriberProfilePanel")
println(item)
print (config)

вывод, который я получил,


{profile={SubscriberProfilePanel={activationDate={copy={table=SubscriebrAudirLog, field=activationDateCust}}, highUtilizationScoreData={count={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=subscriber_key, filters={operator=AND, 1={dateCompare={date1={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=effective_date_ge}, operator=greater, date2={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=currentBillCycleStartDate}}}, 2={dateCompare={date1={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=effective_date_ge}, operator=greater, date2={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=threeBillCyclesStartDate, origin=destination}}, numCompare={num1={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=threshold}, operator=less_equal, num2={table=FactADHPostpaidSubscriptionDataThresholdLimitSource, field=80}}}}}}}, AccountProfilePanel=null, HomeProfilePanel=null

Пожалуйста, помогите мне здесь

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