scala - 在 spark RDD 中正常打印数据而没有数组数组
问题描述
我有以下数据样本:
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)RDD中加载的数据:
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。那么我哪里出错了?或者如果数据以数组形式打印可以吗?从认证的角度来看是否有效?提前致谢
解决方案
为简单起见,您可以&&
在初始表达式中再添加一个表达式
val employeesRdd=sc.textFile("file:///home/cloudera/Desktop/Employees/employees.txt").filter(p=>{p.length > 5 && p!=null && !p.substring(p.length-5).contains("2001")})
employeesRdd.foreach(println)
会给你
67832,CLARE,MANAGER,68319,1991-06-09,2550.00,,1001
从给定的输入中,您不必遍历所有案例类的东西,因为您的最终要求是
重点是我想像输入数据一样以正常形式打印,但没有最后一列的记录!= 2001
我希望答案有帮助
推荐阅读
- python-3.x - 在不关闭 GUI 的情况下停止连续运行 tkinter 函数
- javascript - Puppeteer:如何监听 innerHTML 的变化
- c# - 构建项目引用后如何在 MSBuild 中执行目标?
- neo4j - 在 Neo4J 控制台中从自动完成中清除未使用的属性
- text - 如何使CKEditor 5正确插入带有段落的复制文本?
- xaml - 带有图像的 Xamarin.Forms 网格 - 间距不起作用
- php - TCPDF MultiCell() 按预期放置内容,在前一个单元格上绘制边框
- ios - 如何从普通图像在 GIF 中创建故障效果
- c# - 如何拆分二维字典中的字符串
- php - 是否可以将 IF NOT EXIST 与 INSERT 语句一起使用,在其中插入可变数量的行?