如何在Spark SQL中强制执行内存中的分块排序?

埃胡德·埃谢特

实木复合地板文件格式对记录的顺序敏感。它的列编码可能会根据排序顺序产生较小的文件。另一方面,对TB级的输入记录进行排序非常昂贵。

分成几块,例如10GB,可以在内存中进行排序,同时生成几乎一样小的木地板文件,就好像整个1 TB已完全排序一样。

是否可以指示Spark SQL在生成镶木文件之前进行分块排序?

另一个用例是在编写统一的Parquet文件之前使用分块排序将许多小型Parquet文件合并为一个。

零323

据我所知,Spark <2.0.0中没有开箱即用的此类选项您可以尝试做的一件事是在编写之前coalesce与HiveSORT BY子句结合使用,这应该会产生类似的效果:

val df: DataFrame = ???
val n: Int = ??? //

df.coalesce(n)
df.coalesce(n).registerTempTable("df")
sqlContext.sql("SELECT * FROM df SORT BY foo, bar").write.parquet(...)

或者

df.coalesce(n).sortWithinPartitions($"foo", $"bar").write.parquet(...)

请记住,这SORT BY并不等同于DataFrame.sort

引入了Spark 2.0.0sortBybucketBy方法,其中后者按给定的列对每个存储桶中的输出进行排序,应支持Parquet

val df: DataFrame = ???
val nBuckets: Int = ???

df.write.bucketBy(nBuckets, "foo").sortBy("foo", "bar").saveAsTable(...)

注意:这似乎仅在与保存Parquet文件时有效,saveAsTable但它似乎不支持直接(df.write.bucketBy(...).sortBy(...).parquet(...))中的Parquet writer spark-2.0.0-preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Spark SQL中强制执行内存中的分块排序?

来自分类Dev

如何在Jenkins DSL中强制执行参数排序?

来自分类Dev

如何在Spark中执行辅助排序?

来自分类Dev

如何在.Net中强制执行OutOfMemoryException

来自分类Dev

如何在Perl中强制执行long double

来自分类Dev

如何在Chrome中强制执行504错误

来自分类Dev

如何在vb.net中调试强制执行?

来自分类Dev

如何在Perl中强制执行long double

来自分类Dev

如何在Java中强制执行构造函数

来自分类Dev

如何在GNOME Web中强制执行大文本?

来自分类Dev

如何在matplotlib中的网格内强制执行图?

来自分类Dev

如何在 Antlr 中强制执行某些规则

来自分类Dev

如何在 Java <= 8 中强制执行模块边界

来自分类Dev

如何在SQL(Postgres)中强制执行过滤器评估顺序?

来自分类Dev

无法在SLURM中强制执行内存限制

来自分类Dev

如何在python中从python中强制执行或呈现浏览器中的脚本?

来自分类Dev

如何从域名中删除www并强制执行https?

来自分类Dev

Python中的枚举:如何在方法参数中强制执行

来自分类Dev

如何在git中强制执行“文件名中没有空格”策略?

来自分类Dev

如何选择最不同的值或如何在 Spark 中执行内部/嵌套 groupBy?

来自分类Dev

如何在SQL Server上强制执行SELECT阻止?

来自分类Dev

如何在phpstorm中对数组声明强制执行长语法?

来自分类Dev

GHC如何在多线程应用程序中强制执行评估?

来自分类Dev

如何在Play 2.x中强制执行JSON的严格序列化

来自分类Dev

如何在Sublime中强制执行50个字符的提交摘要行?

来自分类Dev

如何在RedShift中强制执行参照完整性?

来自分类Dev

如何在Java中的for循环中的每个update()之后强制执行repaint()?

来自分类Dev

如何在go框架中为不同的测试强制执行测试顺序?

来自分类Dev

如何在视图上强制执行约束,以确保在MSSQL中返回0行

Related 相关文章

  1. 1

    如何在Spark SQL中强制执行内存中的分块排序?

  2. 2

    如何在Jenkins DSL中强制执行参数排序?

  3. 3

    如何在Spark中执行辅助排序?

  4. 4

    如何在.Net中强制执行OutOfMemoryException

  5. 5

    如何在Perl中强制执行long double

  6. 6

    如何在Chrome中强制执行504错误

  7. 7

    如何在vb.net中调试强制执行?

  8. 8

    如何在Perl中强制执行long double

  9. 9

    如何在Java中强制执行构造函数

  10. 10

    如何在GNOME Web中强制执行大文本?

  11. 11

    如何在matplotlib中的网格内强制执行图?

  12. 12

    如何在 Antlr 中强制执行某些规则

  13. 13

    如何在 Java <= 8 中强制执行模块边界

  14. 14

    如何在SQL(Postgres)中强制执行过滤器评估顺序?

  15. 15

    无法在SLURM中强制执行内存限制

  16. 16

    如何在python中从python中强制执行或呈现浏览器中的脚本?

  17. 17

    如何从域名中删除www并强制执行https?

  18. 18

    Python中的枚举:如何在方法参数中强制执行

  19. 19

    如何在git中强制执行“文件名中没有空格”策略?

  20. 20

    如何选择最不同的值或如何在 Spark 中执行内部/嵌套 groupBy?

  21. 21

    如何在SQL Server上强制执行SELECT阻止?

  22. 22

    如何在phpstorm中对数组声明强制执行长语法?

  23. 23

    GHC如何在多线程应用程序中强制执行评估?

  24. 24

    如何在Play 2.x中强制执行JSON的严格序列化

  25. 25

    如何在Sublime中强制执行50个字符的提交摘要行?

  26. 26

    如何在RedShift中强制执行参照完整性?

  27. 27

    如何在Java中的for循环中的每个update()之后强制执行repaint()?

  28. 28

    如何在go框架中为不同的测试强制执行测试顺序?

  29. 29

    如何在视图上强制执行约束,以确保在MSSQL中返回0行

热门标签

归档