Spark SQL(六)之加载数据的参数配置
一、配置
忽略損壞的文件、忽略丟失的文件、路徑全局過濾器、遞歸文件查找和修改時間路徑過濾器等選項/配置僅在使用基于文件的源(parquet,orc,avro,json,csv,txt)時才有效。
以下示例中使用的目錄層次結(jié)構(gòu)為:
dir/├── childDir/│ └── test.json└── test.avro└── test.orc└── test1.json?
二、忽略損壞的文件
設(shè)置spark.sql.files.ignoreCorruptFiles為true從文件讀取數(shù)據(jù)時忽略損壞的文件。
讀取數(shù)據(jù)文件時忽略損壞的文件例子:
spark.sql("set spark.sql.files.ignoreCorruptFiles=true"); // dir/test.avro 和 dir/test.avro不是json被忽略 Dataset<Row> jsonDF = spark.read().json("hdfs://master:9000/dir/","hdfs://master:9000/dir/chidDir/"); jsonDF.show();?
三、忽略丟失的文件
設(shè)置spark.sql.files.ignoreMissingFiles設(shè)置為true在文件讀取數(shù)據(jù)時忽略不存在的文件。
spark.sql("set spark.sql.files.ignoreMissingFiles=true");Dataset<Row> jsonDF = spark.read().json("hdfs://master:9000/dir/","hdfs://master:9000/dir/chidDir/a.json"); jsonDF.show();?
四、路徑全局過濾器
pathGlobFilter用于僅包含文件名與模式匹配的文件。語法實現(xiàn)為org.apache.hadoop.fs.GlobFilter類,它不會更改分區(qū)發(fā)現(xiàn)的行為。
要加載具有與給定全局模式匹配的路徑的文件,同時保持分區(qū)發(fā)現(xiàn)的行為,例子:
Dataset<Row> jsonDF = spark.read().format("json").option("pathGlobFilter", "*.json") // dir只讀取json文件.load("hdfs://master:9000/dir"); jsonDF.show();?
五、遞歸文件查找
recursiveFileLookup用于遞歸加載文件,并且禁用分區(qū)推斷。其默認(rèn)值為false。如果數(shù)據(jù)源顯式指定partitionSpec并且recursiveFileLookup為true,則將引發(fā)異常。
遞歸加載所有文件例子:
Dataset<Row> jsonDF = spark.read().format("json").option("recursiveFileLookup", "true").load("hdfs://master:9000/dir"); jsonDF.show();?
六、修改時間路徑過濾器
modifiedBefore和·modifiedAfter是可以一起應(yīng)用或單獨應(yīng)用的選項。(注意,結(jié)構(gòu)化流文件源不支持這些選項。)
- modifiedBefore:可選的時間戳記,僅包含修改時間在指定時間之前發(fā)生的文件。提供的時間戳必須采用以下格式:YYYY-MM-DDTHH:mm:ss(例如:2021-03-31T20:10:00)
- modifiedAfter:可選的時間戳記,僅包括修改時間在指定時間之后發(fā)生的文件。提供的時間戳必須采用以下格式:YYYY-MM-DDTHH:mm:ss(例如:2021-03-31T20:10:00)
如果未提供時區(qū)選項,則時間戳使用Spark會話時區(qū)(spark.sql.session.timeZone)。
要加載路徑與給定的修改時間范圍匹配的文件,例子:
Dataset<Row> jsonDF = spark.read().format("json").option("modifiedBefore", "2021-03-21T11:34:00").option("modifiedAfter", "2021-03-05T11:34:00")// Interpret both times above relative to CST timezone.option("timeZone", "CST").load("hdfs://master:9000/dir"); jsonDF.show();?
?
總結(jié)
以上是生活随笔為你收集整理的Spark SQL(六)之加载数据的参数配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业的论文怎么写电脑如何写论文
- 下一篇: 路由器怎么设置能最快路由器如何设置网速最