복붙노트

[SCALA] 분할 마루 파일에서 읽기 DataFrame

SCALA

분할 마루 파일에서 읽기 DataFrame

어떻게 dataframe 같은 조건으로 분할 된 마루를 읽을 수있는,

이 작품 벌금,

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

파티션이 (일 = 5~6) 또는 5 일 = 같은 것을 판독 할 수있다 일 = 6 = 1 일 = 30 일 동안있다,

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

나는 그것이 나에게 모든 30 일 데이터를 제공하고 그것은 너무 큰 * 넣어합니다.

해결법

  1. ==============================

    1.sqlContext.read.parquet 입력으로서 다중 경로를 취할 수있다. 방금 일 = 5 일 = 6 원하는 경우, 당신은 단순히 두 개의 경로를 같이 추가 할 수 있습니다 :

    sqlContext.read.parquet 입력으로서 다중 경로를 취할 수있다. 방금 일 = 5 일 = 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/")
    

    당신이 일에서 폴더가있는 경우 = X, 말 국가 = XX 같은 나라는 자동으로 dataframe의 열로 추가됩니다.

    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/")
    
  2. ==============================

    2.당신은 예를 들어, 일 = 5 일 = 6, 여러 일 동안 읽을 수 및 경로 자체의 범위를 언급 할 경우, 와일드 카드를 사용할 수 있습니다 :

    당신은 예를 들어, 일 = 5 일 = 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까지의 모든 일을 일치합니다.

  3. ==============================

    3.당신은 mergeSchema = TRUE 옵션을 제공해야합니다. 아래에 언급 한 것처럼 (이는 1.6.0에서이다)

    당신은 mergeSchema = TRUE 옵션을 제공해야합니다. 아래에 언급 한 것처럼 (이는 1.6.0에서이다)

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

    이 dataframe에 모든 마루 파일을 읽고 또한 dataframe 데이터의 열을 년, 월, 일을 생성합니다.

    참조 : https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#schema-merging

  4. from https://stackoverflow.com/questions/33650421/reading-dataframe-from-partitioned-parquet-file by cc-by-sa and MIT license