Spark 相关内容随记
随手记录Spark相关的问题、思考等
User Defined Aggregate Functions (UDAFs)
Spark SQL - DataSource
通过实现Spark定义的DataSource接口为Spark新增自定义数据源
数据源API目前分V1和V2版本,到目前为止Spark 3.0.0似乎还没有完成进化,已在3.0.0版本完成V2版重构
Data source V2 API refactoring
预计将在3.2.0版本将V2版API稳定下来
https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-data-source-api-v2.html
https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-DataSourceV2.html
https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-DataSource.html
Category: datasource-v2-series
Category: datasource-v2-spark-three
Spark SQL - CSV
CSV类型文件中,出于各种原因可能导致Spark SQL解析数据会出错。
以下问题举例在Hadoop2.6.0-Spark2.1.1-Scala2.10.6-JDK1.7生产环境出现,较新版本中的Spark具体行为暂不可知。该Spark版本已被魔改且无代码,离线环境中只有Spark2.4.4-Scala2.11,尝试看下源代码发现该部分已被重构,抛异常的类都没有了
例如,有些字段里面包含了特殊字符,导致Spark SQL解析行数据时出现了字段截断错误,从而导致列错位,有些转换函数直接执行失败,进而导致整个任务失败。
问题解决方式是强制指定mode=DROPMALFORMED
,直接将问题数据丢弃,这是Spark SQL直接支持的配置,看文档的时候可能看到了,但是无视掉了。。。
Spark文档中对于CSV支持的配置有详细介绍。
最新版本的参考文档:DataFrameReader#csv
Spark 2.4.6参考文档:DataFrameReader#csv
Spark CLI
要脱离灵活性太差的自研任务调度服务、逐渐开始习惯用原生CLI进行进行任务的提交
spark-submit --name JOB-NAME --master yarn --deploy-mode cluster --conf spark.yarn.submit.waitAppCompletion=false --class com.mxtao.App --jars /xxx/xxx.jar,/xxx/xxxx.jar --queue xx --pincipal xxx@DOMAN --keytab xxx.keytab main-class-in-this-jar.jar args-for-main