38

データフレームとしての条件で分割された寄木細工を読み取る方法、

これはうまくいきます、

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日すべてのデータが得られ、大きすぎます。

4

4 に答える 4

97

sqlContext.read.parquet入力として複数のパスを取ることができます。day=5とだけが必要な場合day=6は、次のように 2 つのパスを追加するだけです。

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 の時点で、Spark が列を自動的に生成するには、「basepath」オプションを提供する必要があります。Spark 1.6.x では、「データ」、「年」、「月」、「日」の列を持つデータフレームを作成するには、上記を次のように書き直す必要があります。

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/")
于 2015-11-11T17:45:00.300 に答える
8

オプションを指定する必要があり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-merging

于 2016-09-01T00:02:40.690 に答える