Woo*_*per 22 scala apache-spark parquet spark-dataframe
如何读取条件为数据帧的分区镶木地板,
这工作正常,
val dataframe = sqlContext.read.parquet("file:///home/msoproj/dev_data/dev_output/aln/partitions/data=jDD/year=2015/month=10/day=25/*")
Run Code Online (Sandbox Code Playgroud)
分区是有day=1 to day=30是它可以读取类似(day = 5 to 6)或者day=5,day=6,
val dataframe = sqlContext.read.parquet("file:///home/msoproj/dev_data/dev_output/aln/partitions/data=jDD/year=2015/month=10/day=??/*")
Run Code Online (Sandbox Code Playgroud)
如果我把*它给我所有30天的数据,它太大了.
Gle*_*olt 59
sqlContext.read.parquet可以采用多个路径作为输入.如果你只想day=5和day=6,你可以简单地添加两个路径,如:
val dataframe = sqlContext
.read.parquet("file:///your/path/data=jDD/year=2015/month=10/day=5/",
"file:///your/path/data=jDD/year=2015/month=10/day=6/")
Run Code Online (Sandbox Code Playgroud)
如果你有文件夹day=X,比如说country=XX,country将自动添加为一个列dataframe.
编辑:从Spark 1.6开始,需要提供"basepath"选项,以便Spark自动生成列.在Spark 1.6.x中,必须像这样重写上面的内容,以创建一个包含"data","year","month"和"day"列的数据框:
val dataframe = sqlContext
.read
.option("basePath", "file:///your/path/")
.parquet("file:///your/path/data=jDD/year=2015/month=10/day=5/",
"file:///your/path/data=jDD/year=2015/month=10/day=6/")
Run Code Online (Sandbox Code Playgroud)
Nee*_*che 17
如果你想读多天,例如day = 5和day = 6,想提路径本身的范围内,可以使用通配符:
val dataframe = sqlContext
.read
.parquet("file:///your/path/data=jDD/year=2015/month=10/day={5,6}/*")
Run Code Online (Sandbox Code Playgroud)
通配符还可用于指定一系列天数:
val dataframe = sqlContext
.read
.parquet("file:///your/path/data=jDD/year=2015/month=10/day=[5-10]/*")
Run Code Online (Sandbox Code Playgroud)
这匹配从5到10的所有日子.
小智 6
你需要提供mergeSchema = true选择.如下所述(这是1.6.0):
val dataframe = sqlContext.read.option("mergeSchema", "true").parquet("file:///your/path/data=jDD")
Run Code Online (Sandbox Code Playgroud)
这会将所有镶木地板文件读入数据框,并在数据框数据中创建年,月,日列.
参考:https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#schema-merging
| 归档时间: |
|
| 查看次数: |
39272 次 |
| 最近记录: |