У меня ниже образец данных:
67832,CLARE,MANAGER,68319,1991-06-09,2550.00,,1001
65646,JONAS,MANAGER,68319,1991-04-02,2957.00,,2001
Я хочу получить данные, где данные последнего столбца NOT EQUAL to 2001.
Поэтому я попытался выполнить следующие шаги
1) Загруженные данные в СДР:
val employeesRdd=sc.textFile("file:///home/cloudera/Desktop/Employees/employees.txt").filter(p=>{p.length > 0 && p!=null})
2) Выполненное преобразование:
Если я изменяю свой код, как показано ниже, он дает массив строк, но я хочу, чтобы он печатался как обычные данные в качестве входного набора данных.,
employeesRdd.map(_.split(",")).filter(p=>!(p(7)="2001")).collect
3) Даже я пытался сопоставить его с классом дел, но получил вывод, как показано ниже:
case class employees(emp_id:java.lang.Long,emp_name:String, job_name:String,manager_id:java.lang.Long,hire_date:String,salary:java.lang.Double,commision:java.lang.Double,dep_id:java.lang.Long);
val employeesRdd1=employeesRdd.map(_.split(",")).map(p=>employees(if(p(0).length>0)p(0).toLong else 0L,p(1),p(2),if(p(3).length>0) p(3).toLong else 0L,p(4),if(p(5).length>0) p(5).toDouble else 0D, if(p(6).length>0) p(6).toDouble else 0D,if(p(7).length>0)p(7).toLong else 0L)).toDF()
employeesRdd1.foreach(println):
ВЫБОР ВЫБОРА ДАННЫХ ПОСЛЕ ОБОЗНАЧЕНИЯ:
employees(67832,CLARE,MANAGER,68319,1991-06-09,2550.00,,1001)
employees(65646,JONAS,MANAGER,68319,1991-04-02,2957.00,,2001)
Как получить доступ к элементам в таких случаях.Я также попробовал приведенный ниже пример кода, но он выдает error that _1 is not a member of String
:
employeesRdd1.map(_._1).first
Таким образом, весь смысл в том, что я хочу печатать в обычной форме, такой как входные данные, но без записей с последним столбцом! =2001. Так где же я иду не так?Или это нормально, если данные печатаются в виде массива массива ??Это действительно с точки зрения сертификации ??Заранее спасибо