Foreach с картой в Scala - PullRequest
       1

Foreach с картой в Scala

0 голосов
/ 07 апреля 2020

У меня есть данные со следующими странами, и я хочу передать значение страны в foreach l oop с картой для загрузки данных в отдельный кадр данных на основе ограничения строки.

Например,

Сгруппированные данные:

enter image description here

Исходные данные:

enter image description here

Таблица результатов:

enter image description here

Это моя попытка

val x = ctrycnt.select("cnt").rdd.map(r => r(0)).collect() x.foreach { x=> var data = s"select * from smscnt_2020_table where Country=$x" }

1 Ответ

0 голосов
/ 07 апреля 2020

Я приложил то, о чем мог думать. Существует некоторая разница в данных, так как я должен был готовить данные, не мог напрямую извлечь из проблемы, как вы прикрепили изображение. Было бы проще, если бы вы прикрепили данные, чтобы каждый мог копировать.

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

rest_csv: -

Country,Threshold,Row_Restriction
India,0,0
USA,25,5
Sweden,50,2

country_csv: -

Country,ContId,Agent,Threshold,RowNumber
India,123,A,0,1
India,124,A,0,2
India,125,A,0,3
India,126,A,0,4
USA,147,A,50,1
USA,148,A,50,2
USA,149,A,50,3
USA,147,A,50,4
USA,147,A,50,5
USA,146,A,50,6
USA,147,A,50,7
Sweden,152,A,25,1
Sweden,153,A,25,2
Sweden,154,A,25,3
Sweden,157,A,25,4
Sweden,158,A,25,5
Sweden,159,A,25,6
val countryDf = spark.read.format("csv").option("inferSchema","true").option("header",true).load(country_csv)
val restDf = spark.read.format("csv").option("inferSchema","true").option("header",true).load(rest_csv)

val newDf = countryDf.join(restDf,countryDf.col("Country").equalTo(restDf.col("Country")))

val finalDf =  newDf.where(col("RowNumber").leq(col("Row_Restriction")).or(col("Row_Restriction").equalTo(lit(0)))).select(countryDf.col("*"))

finalDf.show

результат: -

+-------+------+-----+---------+---------+
|Country|ContId|Agent|Threshold|RowNumber|
+-------+------+-----+---------+---------+
|  India|   123|    A|        0|        1|
|  India|   124|    A|        0|        2|
|  India|   125|    A|        0|        3|
|  India|   126|    A|        0|        4|
|    USA|   147|    A|       50|        1|
|    USA|   148|    A|       50|        2|
|    USA|   149|    A|       50|        3|
|    USA|   147|    A|       50|        4|
|    USA|   147|    A|       50|        5|
| Sweden|   152|    A|       25|        1|
| Sweden|   153|    A|       25|        2|
+-------+------+-----+---------+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...