как отфильтровать несколько строк в таблице с помощью Scala - PullRequest
0 голосов
/ 01 апреля 2019

Использование Scala: у меня есть таблица emp, как показано ниже

id, name,   dept,   address
1,  a,  10, hyd
2,  b,  10, blr
3,  a,  5,  chn
4,  d,  2,  hyd
5,  a,  3,  blr
6,  b,  2,  hyd

Код:

val inputFile = sc.textFile("hdfs:/user/edu/emp.txt"); 
val inputRdd = inputFile.map(iLine => (iLine.split(",")(0),
                             iLine.split(",")(1), 
                             iLine.split(",")(3)
                            )); 
// filtering only few columns Now i want to pull hyd addressed employees complete data 

Проблема: Я не хочу печатать все empподробности, я хочу напечатать только несколько подробностей emp, которые все из hyd.

  1. Я загрузил этот набор данных emp в Rdd
  2. Я разделил этот Rdd с помощью ','
  3. теперь я хочу печатать только по адресу emp.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я думаю, что приведенное ниже решение поможет решить вашу проблему.

  val fileName = "/path/stact_test.txt"
  val strRdd = sc.textFile(fileName).map { line =>
    val data = line.split(",")
    (data(0), data(1), data(3))
  }.filter(rec=>rec._3.toLowerCase.trim.equals("hyd"))

после разделения данных отфильтруйте местоположение, используя 3-й элемент из кортежа RDD.

Вывод:

(1,  a, hyd)
(4,  d,  hyd)
(6,  b,  hyd)
0 голосов
/ 01 апреля 2019

Вы можете попробовать использовать фрейм данных


val viewsDF=spark.read.text("hdfs:/user/edu/emp.txt")
val splitedViewsDF = viewsDF.withColumn("id", split($"value",",").getItem(0))
                            .withColumn("name", split($"value", ",").getItem(1))
                            .withColumn("address", split($"value", ",").getItem(3))
                            .drop($"value")
                            .filter(df("address").equals("hyd") )

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