Нужна помощь, у меня есть файл 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
Пожалуйста, помогите мне здесь