
[英]What is the proper way of running a Spark application on YARN using Oozie (with Hue)?
[英]What is the proper way to validate datatype of csv data in spark?
我们有一个JSON文件作为spark程序的输入(描述了我们要在每列上检查的架构定义和约束),我想执行一些数据质量检查,例如(Not NULL,UNIQUE)和数据类型验证(想检查csv文件是否包含根据json模式的数据?)。
JSON档案:
{
“ id”:“ 1”,
“名称”:“雇员”,
“源”:“本地”,
“ file_type”:“文本”,
“ sub_file_type”:“ csv”,
“ delimeter”:“,”,
“ path”:“ /用户/全部/dqdata/data/emp.txt”,
“列”:[
{“ column_name”:“ empid”,“ datatype”:“ integer”,“ constraints”:[“ not null”,“ unique”],“ values_permitted”:[“ 1”,“ 2”]},
{“ column_name”:“ empname”,“ datatype”:“ string”,“ constraints”:[“ not null”,“ unique”],“ values_permitted”:[“ 1”,“ 2”]},
{“ column_name”:“薪水”,“数据类型”:“双精度”,“约束”:[“非空”,“唯一”],“ values_permitted”:[“ 1”,“ 2”]},
{“ column_name”:“ doj”,“ datatype”:“ date”,“ constraints”:[“ not null”,“ unique”],“ values_permitted”:[“ 1”,“ 2”]},
{“ column_name”:“ location”,“ string”:“ number”,“ constraints”:[“ not null”,“ unique”],“ values_permitted”:[“ 1”,“ 2”]}
]
}
样本CSV输入:
empId,empname,salar,dob,位置
1,a,10000,11-03-2019,浦那
2,b,10020,14-03-2019,浦那
3,a,10010,15-03-2019,浦那
a,1,10010,15-03-2019,浦那
请记住,
1)我故意将无效数据用于empId和name字段(检查最后一条记录)。 2)json文件中的列数不固定?
题:
如何确保输入数据文件包含给定数据类型(JSON)文件中的所有记录?
我们尝试了以下方法:
1)如果我们尝试通过应用外部架构使用数据帧从CSV文件中加载数据,则spark程序会立即引发一些强制转换异常(NumberFormatException等),并异常终止该程序。 但是我想继续执行流程,并将特定错误记录为“列empID的数据类型不匹配错误”。 仅当我们在数据帧上调用一些RDD动作时,上述情况才起作用,我觉得这是一种验证模式的怪异方法。
请指导我,我们如何在火花中实现它?
我认为这里没有免费的午餐,您不必自己编写此过程,但是您可以执行的过程是...
Strings
Dataset
,以便每一行都行 map
函数解析数据集,以检查每列是否存在Null
或数据类型问题 validRow
的boolean
和一个称为message
或description
的String
try/catch
或Try/Success/Failure
并捕获异常,并相应地设置validRow
和description
列 DataFrame/DataSet
( validRow
标志设置为True
)写入成功的位置,然后将错误的DataFrame/DataSet
写入错误的位置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.