Недавно мы перешли из «EMR на HDFS» -> «EMR на S3» (EMRFS с включенным согласованным просмотром), и мы поняли, что запись Spark «SaveAsTable» (формат паркета) на S3 была ~ 4 раза медленнее по сравнению с HDFS, но мы обнаружили обходной путь использования DirectParquetOutputCommitter - [1] w/Spark 1.6.Spark 2.0 обесценивает «DirectParquetOutputCommitter», как жить без него?
Причина S3 медлительности - Мы должны были заплатить так называемый Паркетный руль [2], где выход по умолчанию коммиттер пишет во временную таблицу и переименовывает его позже, когда операция переименования в S3 является очень дорогой
Также мы понимаем риск использования «DirectParquetOutputCommitter», который позволяет предотвратить повреждение данных с помощью спекулятивных задач.
В настоящее время w/Spark 2.0 этот класс устарел, и нам интересно, какие параметры у нас есть на столе, чтобы мы не получали более медленную запись ~ 4x при обновлении до Spark 2.0. Любые мысли/предложения/рекомендации будут высоко оценены.
Один из способов, что мы можем думать о том, - Сохранить на HDFS, а затем скопировать его в S3 через s3DistCp (любые мысли о том, как это может быть сделано в здравом, как наши Hive метаданных магазина указывает на S3?)
Также похоже, что NetFlix исправил это - [3], любую идею о том, когда они планируют открыть исходный код?
Спасибо.
[2] - https://www.appsflyer.com/blog/the-bleeding-edge-spark-parquet-and-s3/
[3] - https://www.youtube.com/watch?v=85sew9OFaYc&feature=youtu.be&t=8m39s http://www.slideshare.net/AmazonWebServices/bdt303-running-spark-and-presto-on-the-netflix-big-data-platform
Я только что столкнулся с той же проблемой и вернулся к emr 4.8. Curios, чтобы увидеть ответы здесь. Более подробную информацию можно найти здесь: https://issues.apache.org/jira/browse/SPARK-10063 – Niros