Spark 2.0 弃用了“DirectParquetOutputCommitter”,没有它如何生活?

2024-04-24

最近,我们从“HDFS 上的 EMR”-->“S3 上的 EMR”(启用了一致视图的 EMRFS)迁移,我们意识到 Spark“SaveAsTable”(镶木地板格式)写入 S3 的速度比 HDFS 慢约 4 倍,但我们发现使用 DirectParquetOutputCommitter -[1] w/ Spark 1.6 的解决方法。

S3 缓慢的原因 - 我们必须支付所谓的 Parquet 税 - [2],其中默认输出提交者写入临时表并稍后重命名,其中 S3 中的重命名操作非常昂贵

此外,我们确实了解使用“DirectParquetOutputCommitter”的风险,即启用推测任务时可能会导致数据损坏。

现在,在 Spark 2.0 中,此类已被弃用,我们想知道我们有哪些选项,以便在升级到 Spark 2.0 时,我们不会承受约 4 倍慢的写入速度。任何想法/建议/建议将不胜感激。

我们可以想到的一种解决方法是 - 保存在 HDFS 上,然后通过 s3DistCp 将其复制到 S3(当我们的 Hive 元数据存储指向 S3 时,如何以合理的方式完成此操作,有什么想法吗?)

看起来 Netflix 已经修复了这个问题 -[3],知道他们计划何时开源吗?

Thanks.

[1] - https://github.com/apache/spark/blob/21d5ca128bf3afd5c2d4c7fcc56240e28443474f/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/DirectParquetOutputCommitter.scala https://github.com/apache/spark/blob/21d5ca128bf3afd5c2d4c7fcc56240e28443474f/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/DirectParquetOutputCommitter.scala

[2] - https://www.appsflyer.com/blog/the-bleeding-edge-spark-parquet-and-s3/ https://www.appsflyer.com/blog/the-bleeding-edge-spark-parquet-and-s3/

[3] - http://www.slideshare.net/AmazonWebServices/bdt303-running-spark-and-presto-on-the-netflix-big-data-platform http://www.slideshare.net/AmazonWebServices/bdt303-running-spark-and-presto-on-the-netflix-big-data-platform


您可以使用:sparkContext.hadoopConfiguration.set("mapreduce.fileoutputcommitter.algorithm.version", "2")

因为您使用的是 EMR,所以只需使用 s3(不需要 s3a)

我们正在使用 Spark 2.0 并将 Parquet 写入 S3 的速度非常快(大约与 HDFS 一样快)

如果您想了解更多信息,请查看此 jira 票证SPARK-10063 https://issues.apache.org/jira/browse/SPARK-10063

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 2.0 弃用了“DirectParquetOutputCommitter”,没有它如何生活? 的相关文章

随机推荐

  • Paypal:客户端身份验证失败

    尝试让我的 paypal REST api 网站上线 它在沙箱模式下运行良好 并具有经过验证的传输 当我将沙箱切换为实时客户端 ID 和密钥时 出现错误 error invalid client error description Clie
  • Azure Functions不生成extensions.json

    我有一个具有多种功能的 Azure Functions 项目 由服务总线和 Blob 存储触发 他们已经构建并部署到 azure Fine 几个月了 某物最近发生了这样的事情 当您单击该函数时 它们不再从我的构建计算机进行部署 并在 Azu
  • FBSDKLog:在 Facebook SDK 初始化之前无法启动 FBSDKGraphRequestConnection

    我只是在我的 iOS 应用程序中使用 FBSDKCoreKit 8 1 0 最新 使用 Facebook Analytics 此错误消息不断淹没我的日志 FBSDKLog FBSDKGraphRequestConnection cannot
  • Django 模板上的 Unicode 字符串显示

    我正在使用 django v1 5 我将渲染一个名为 foobar 的变量 它是一个 json obj 包含 unicode 字符串 def home request import json foo name u 赞我们一下 bar jso
  • awk 中的并行处理?

    awk 逐行处理文件 假设每行操作不依赖于其他行 有没有办法让 awk 一次并行处理多行 是否有其他文本处理工具可以自动利用并行性并更快地处理数据 唯一尝试提供 awk 并行实现的 awk 实现是并行 awk http code googl
  • Python 在计算机睡眠/休眠后冻结

    我有一个使用 pythonw 在后台运行的 python 脚本 如果我关闭笔记本电脑 它就会进入睡眠模式 当我打开笔记本电脑时 我的程序几乎没有任何功能 并在几秒钟后冻结 有什么方法可以让我的脚本知道我的计算机是否进入睡眠模式 以便它可以处
  • PyQt 自动调整 qlineedit 字符间距

    我有一个 qlineedit 用户在其中输入验证码 我希望能够每隔 5 个字符自动间隔这些数字 就像激活自动添加破折号的窗口时一样 例如 12345 67890 12345 67890 如果位数是固定的 最好的选择是使用setInputMa
  • 银光。如何将 InlineUIContainer 内容中的文本与 RichTextBox 中的外部文本对齐

    任务 使 InlineUIContainer 的文本内容与外部文本内联 InlineUIContainer 内容的标准行为是当底部边缘与外部文本内联时 可以使用 RenderTransform 移动 InlineUIContainer 的位
  • CSS 文本对齐延迟与宽度动画

    我正在尝试将文本设置为动画 使其在页面加载时从左到右显示 这只需简单地设置即可完成 keyframes从 0 过渡max width至 100 然而 我的文本对齐设置似乎仅在动画完成后才应用 我只想让文本内容本身显示出我想要的位置 并假设我
  • Django ORM和链式select_相关

    如何使用 Django ORM 执行此查询 它是一个多重联接 从一个表链接到另一个表 关于 select 相关的 Django 文档 https docs djangoproject com en 2 2 ref models querys
  • 如何在一页上放置多个jssor滑块?

    当我尝试在页面上放置多个滑块时 只有第一个滑块有效 有什么办法可以让它们同时工作吗 搜索堆栈溢出后我发现了这个 请按以下方式初始化多个实例 var jssor slider1 new JssorSlider slider1 containe
  • 从另一个数据帧中减去一个数据帧,不包括第一列 Pandas

    我必须使用相同列的数据框 我的任务应该是从 df nap 中减去 df tot 而不触及第一列 A 最简单的解决方案是什么 谢谢你 import numpy as np import pandas as pd df tot pd DataF
  • 在仪表板标题中间对齐可变长度的文本

    我使用闪亮的仪表板包 标题需要有标题 文本和徽标 标题应位于左侧 文本应位于标题的中间 中心 徽标应位于右侧 仪表板侧边栏还有两个过滤器 选择输入 中间的文本显示用户选择 因此文本的长度根据不同的选择而不同 我没有 css 背景 也不知道如
  • 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

    如何将参数传递给通过 LoadLibrary 加载的 DLL 的初始化函数 有可能吗 也就是说 无需求助于某种导出函数或共享内存 没有直接的方法 最简单的可能是通过环境变量 它们可以在调用之前轻松设置LoadLibray with sete
  • NgRx - 状态如何组合和初始化

    当我们初始化 Store 时 StoreModule provideStore r1 Reducer1 r2 Reducer2 我们确实将减速器传递到 Store 进行存储 但我们实际上从未将初始状态传递给存储 除了在减速器函数中定义它 c
  • 有没有办法覆盖动作脚本运算符,特别是我想覆盖等于运算符

    是否可以覆盖 equals 运算符 即 对于可以通过 2 个或更多字段匹配来确定相等性的客户类别 如果您的意思是重载 作为 equals 的同义词 那么您不能 因为 ActionScript 不提供运算符重载 只需为您的类编写一个 equa
  • 收到 SIGNAL 11 错误

    再会 我有一个关于使用 SDK 开发 Android 应用程序的问题 我们的应用程序在 Android 2 1 API Level 7 下遇到问题 至少在 Android 2 1 update1 模拟器和 Motorola Droid X
  • 在 post-command-hook 中,这个用于kill-word的命令已经以某种方式变成了kill-region

    In my post command hook回调 当我这样做时kill word the this command var is kill region 并不是kill word正如预期的那样 我想那是因为kill word uses k
  • Swift 3.0 将图像写入目录

    我有一个简单的ImagePicker供用户选择或拍摄个人资料照片 我想保存这个image to the Home Directory方便以后加载 问题是未设置图像类型 Save Image PPimagePicked image let i
  • Spark 2.0 弃用了“DirectParquetOutputCommitter”,没有它如何生活?

    最近 我们从 HDFS 上的 EMR gt S3 上的 EMR 启用了一致视图的 EMRFS 迁移 我们意识到 Spark SaveAsTable 镶木地板格式 写入 S3 的速度比 HDFS 慢约 4 倍 但我们发现使用 DirectPa