想知道Parquet謂詞下推是否也適用於S3,不僅僅是HDFS。特別是如果我們使用Spark(非EMR)。是Parquet謂詞下推對S3使用Spark非EMR?
進一步的解釋可能會有幫助,因爲它可能涉及對分佈式文件系統的理解。
想知道Parquet謂詞下推是否也適用於S3,不僅僅是HDFS。特別是如果我們使用Spark(非EMR)。是Parquet謂詞下推對S3使用Spark非EMR?
進一步的解釋可能會有幫助,因爲它可能涉及對分佈式文件系統的理解。
是的。過濾器下推不依賴於底層文件系統。它只取決於spark.sql.parquet.filterPushdown
和過濾器的類型(並非所有過濾器都可以下推)。
Spark使用HDFS實木複合地板& s3庫,所以相同的邏輯工作。 (並且在火花1.6中,他們已經爲平面模式木地板文件添加了更快的快捷鍵)
我在想這個,所以我只是測試了一下。我們使用EMR集羣和Spark 1.6.1。
結果:
我會在有空的時候添加更多關於測試和結果的細節。
這裏的鑰匙我會推薦S3A工作
spark.sql.parquet.filterPushdown true
spark.sql.parquet.mergeSchema false
spark.hadoop.parquet.enable.summary-metadata false
spark.sql.orc.filterPushdown true
spark.sql.orc.splits.include.file.footer true
spark.sql.orc.cache.stripe.details.size 10000
spark.sql.hive.metastorePartitionPruning true
spark.speculation false
spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2
spark.hadoop.mapreduce.fileoutputcommitter.cleanup.skipped true
設置這些值的最佳方法是什麼?我在AWS EMR集羣中使用Spark,並在Scala spark腳本中設置了這些(摘要 - 元數據和算法版本)。我一直使用filterPushdown和mergeSchema作爲Parquet讀/寫的選項。但我想以某種方式擺脫寫入S3的_ $文件夾$文件。 –
據艾米莉科廷星火峯會,它依賴於「文件系統」(在這種情況下,對象存儲),因爲S3不支持隨機訪問。 https://youtu.be/_0Wpwj_gvzg?t=1307 – andresp
謝謝!而另一個有爭議的答案也說我錯了。我在Spark 2.2.0中再次查找了代碼,它似乎仍不依賴於文件系統。但它可能間接依賴於它。 –
但S3確實具有隨機訪問權限:http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html#ExampleGetRangeRequestHeaders 而Hortonworks談到S3上的過濾器下推:https://hortonworks.github。 io/hdp-aws/s3-spark/index.html#reading-orc-and-parquet-datasets –