2017-10-26 5 views
-1

Hiveパーティションパターン(s3://csvfiles/Y=2017/M=10/D=12/H=23/M=12/...)で、フォルダ内にcsvファイルがまとめられています。フォルダ構造を維持したまま、Sparkでファイルを変換する方法

したがって、「時間」フォルダには、csv形式のファイルがほとんどありません。 特定の時間のすべてのファイルをORC形式の1つのファイルに結合し、別のルートフォルダに書き込みますが、「日付」パターンは保持します。

s3://orcfilesY=2017/M=10/D=12/H=23/singlefile.orc 

それはスパークでそれを行うことは可能です: ので、結果はそのようなものでしょうか?

おかげ

答えて

0

repartitionpartitionBy

val n: Int 

df 
    .partitionBy(n, $"Y", $"M", $"D", $"H") 
    .write.partitionBy("Y", "M", "D", "H").orc(...) 
+0

私の知る限り、これはソースフォルダ内の私は既に持っているパーティションを無視します - それは、すべてのデータを読み込みますし、それを再分割します。 寄木細工のファイルの場合、 "basepath"を定義すると、 "partition discovery"(https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#partition-discovery)が実行されます。 )。 これを行う方法 –

+0

AFAIKこれは、ソースフォルダにすでにあるパーティションを無視します。すべてのデータが読み込まれ、パーティションが再分割されます。 寄木細工のファイルの場合、 "basepath"を定義すると、 "partition discovery" [https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#partition-discovery ]。 csvファイルでも対応できますか? 私のソースでは、データは分単位でも区切られていますが、宛先ではY/M/D/Hだけでパーティションにしたいと考えています。 鍵の一部で再分割すると、すべてのデータが再シャッフルされますか? –

関連する問題