正在从分区的镶木地板文件中读取DataFrame



如何读取条件为数据帧的分区拼花地板,

这很好,

val dataframe = sqlContext.read.parquet("file:///home/msoproj/dev_data/dev_output/aln/partitions/data=jDD/year=2015/month=10/day=25/*")

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=??/*")

如果我放*,它会给我所有30天的数据,而且它太大了。

sqlContext.read.parquet可以采用多个路径作为输入。如果你只想要day=5day=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/")

如果您在day=X下有文件夹,例如country=XXcountry将自动添加为dataframe中的一列。

编辑:从Spark 1.6开始,需要提供一个"basepath"选项,Spark才能自动生成列。在Spark 1.6.x中,必须像这样重写以上内容,才能创建一个包含"data"、"year"、"month"one_answers"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/")

如果您想读取多天,例如day = 5day = 6,并想在路径本身中提及范围,可以使用通配符:

val dataframe = sqlContext
  .read
  .parquet("file:///your/path/data=jDD/year=2015/month=10/day={5,6}/*")

通配符也可以用于指定天数范围:

val dataframe = sqlContext
  .read
  .parquet("file:///your/path/data=jDD/year=2015/month=10/day=[5-10]/*")

这是从5点到10点的所有日子。

您需要提供mergeSchema = true选项。如下所述(这是从1.6.0开始的):

val dataframe = sqlContext.read.option("mergeSchema", "true").parquet("file:///your/path/data=jDD")

这将把所有镶木地板文件读取到数据帧中,并在数据帧数据中创建年、月和日列。

参考编号:https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#schema-合并

在我使用pyspark的情况下:

sdf_table = spark.read.parquet("s3://bucket/table/**/*.parquet")

**是拼花地板的所有分区(一个glob表达式)

注意,读取桶中镶木地板的所有文件";表/",因此,请继续使用其他文件

进行wwarning

我无法像Cristian建议的那样使用通配符。经过一番挖掘,我发现以下似乎有效:

spark.read.option("recursiveFileLookup", "true").parquet("s3a://bucket/table/")

https://kontext.tech/article/887/read-parquet-files-from-nested-directories

这个线程中的答案对我的类似需求没有帮助,所以我创建了[并随后回答了]这个问题。

在读取Synapse spark数据帧时将分区步骤作为列包含

相关内容

  • 没有找到相关文章

最新更新