寄木細工データを書き込むには、次のようにします。しかし、複数のファイルに出力しようとすると、単一の列を読み込んでもすべてのs3データが読み込まれないので、どうすればこのことができますか?例えば寄木細工で複数のs3ファイルを出力する方法
AvroParquetWriter<GenericRecord> writer =
new AvroParquetWriter<GenericRecord>(file, schema);
GenericData.Record record = new GenericRecordBuilder(schema)
.set("name", "myname")
.set("favorite_number", i)
.set("favorite_color", "mystring").build();
writer.write(record);
私は赤のfavorite_colorを持つすべてのデータは、特定のクエリのコストを最小化するために、1つのファイルや他のファイル内の青色のものになりますように、列の値でパーティションを作成する場合。 Hadoopの文脈には何か類似したものがあるはずです。私は見つけることができるすべては
df.write.parquet("hdfs:///my_file", partitionBy=["created_year", "created_month"])
のようなものを使用してSparkを言及しかし、私はHadoopの持つ純粋なJavaでpartitionByに相当するものを見つけることができませんものです。
、NativeS3FileSystemのHadoopのの実装はS3filesに(部分コンテンツの読み取り)追求をサポートしていません。最初にファイル全体をダウンロードします。 –
しかし、これを見てみるといいかもしれません:http://blog.cask.co/2015/10/multiple-outputs-in-cdap/ そこには、「CDAPの新機能では、今ではCDAPのMapReduceプログラムを使用して、出力がS3のParquetファイルかTableデータセットかどうかにかかわらず、複数の出力に書き込むことができます」 –
これを行うコードを書いていますが、HDFSシステムclouderaまたはhortonディストリビューション。あなたはそれらの間にどのような違いがあるのか分かりますか? – hlagos