apache-spark - 为了避免手动文件错误,如何在 spark/scala 中编码列检查的动态数据类型
问题描述
我们得到了很多手动文件,我们需要在处理数据帧之前验证少数数据类型。有人可以建议我如何继续这个要求。基本上需要编写一个适用于许多文件的 spark 通用/通用程序。如果可能,请发送有关此电子邮件 ID 的更多详细信息以及 pathirammi1@gmail.com。
解决方案
想知道您的文件是否有分隔符的记录(如 csv 文件)。如果是,您可以很好地将其作为文本文件读取,然后拆分基于记录和分隔符的记录并进行处理。
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
object RDDFromCSVFile {
def main(args:Array[String]): Unit ={
def splitString(row:String):Array[String]={
row.split(",")
}
val spark:SparkSession = SparkSession.builder()
.master("local[1]")
.appName("SparkByExample")
.getOrCreate()
val sc = spark.sparkContext
val rdd = sc.textFile("randomfile.csv")
val rdd2:RDD = rdd.map(row=>{
val strArray = splitString(row)
val field1 = strArray(0)
val field2 = strArray(1)
val field3 = strArray(3)
val field4 = strArray(4)
// DO custom code here and return to create RDD
})
rdd2.foreach(a=>println(a.toString))
}
}
如果您有非结构化数据,那么您应该使用以下代码
import org.apache.spark.sql.SparkSession
object RDDFromWholeTextFile {
def main(args:Array[String]): Unit = {
val spark:SparkSession = SparkSession.builder()
.master("local[1]")
.appName("SparkByExample")
.getOrCreate()
val sc = spark.sparkContext
val rdd = sc.wholeTextFiles("alice.txt")
rdd.foreach(a=>println(a._1+"---->"+a._2))
}
}
希望这可以帮助 !!谢谢,纳文
推荐阅读
- jenkins-pipeline - java.lang.NoSuchMethodError:在步骤中找不到这样的 DSL 方法“警告”
- django - Django + Pymongo 创建账户确认链接
- node.js - 如何在 mocha 中使用嵌套的 json 数据测试图像上传
- javascript - 如何计算失败的承诺数量?
- python - 如何将张量从 2D 转换为 4D
- php - WordPress 简单的函数调用阻止页面加载
- flutter - “文本样式?” 不能分配给参数类型“TextStyle”
- kotlin - 运行 Jacoco 覆盖时缺少带有 when 和 enum 的分支
- react-native - 更新应用程序后 React Native fetch() 响应不同
- java - 如何导出包中的文件?