2017-06-20 22 views
-1

Spark 2.1を使用して複数のパーティションでorcファイルを作成しようとしています。 a & bは私がして、パーティションにしたい二つの列です df.write.option("compression", "zlib").partitionBy("a, b").orc("s3a://bucket/")Spark 2.1:DataFrameWriterパーティションで複数の列を提供する方法

:私のコードはそうのように見えます。

私はorg.apache.spark.sql.AnalysisException: Partition column "a, b" not found in schemaと付き合っています!

または'a', 'b'のようにいくつかの組み合わせを試しましたが、何もありません。何か案は?ありがとう!

+0

問題が見つかりました。そして投票した人には、複数のパーティションが機能するためには、関数の順序が重要であることに注意してください。まず 'partitionBy'が来てから他のものが来ます。これは動作します: 'df.write.partitionBy(" a "、" b ")オプション("圧縮 "、" zlib ").orc(" s3a:// bucket/")'!ドキュメントからは明らかではありませんが、ドキュメンテーションやWeb上のその他の回答はどこにもありません。 – iyerland

答えて

2

私は問題を発見しました!そして投票した人には、複数のパーティションが機能するためには、関数の順序が重要であることに注意してください。最初にpartitionByが来て、他は来る。したがって、これは動作します:df.write.partitionBy("a", "b").option("compression", "zlib").orc("s3a://bucket/")!ドキュメントからは明らかではありませんが、ドキュメンテーションやWeb上のその他の回答はどこにもありません。

-1
df.write.option("compression", "zlib").partitionBy("a", "b").orc("s3a://bucket/") 

おそらくこれが役立ちます。

+0

私もそれを試して、うまくいきませんでした!私の答えを見てください。ありがとう。 – iyerland

関連する問題