gpt4 book ai didi

sql - Spark导入数据时如何设置分区/节点数

转载 作者:行者123 更新时间:2023-12-04 11:14:48 24 4
gpt4 key购买 nike

问题:我想使用以下方法将数据从 S3 导入 Spark EMR:

data = sqlContext.read.json("s3n://.....")

有没有办法设置 Spark 用来加载和处理数据的节点数?这是我如何处理数据的示例:
data.registerTempTable("table")
SqlData = sqlContext.sql("SELECT * FROM table")

语境 : 数据不是太大,加载到Spark和查询需要很长时间。我认为 Spark 将数据划分为太多节点。我希望能够手动设置。我知道在处理 RDD 和 sc.parallelize 时我可以将分区数作为输入传递。另外,我见过 repartition() ,但我不确定它是否可以解决我的问题。变量 dataDataFrame在我的例子中。

让我更精确地定义分区。定义一:通常称为“分区键”,其中选择一列并编制索引以加快查询速度(这不是我想要的)。定义二:(这是我关心的地方)假设你有一个数据集,Spark 决定将它分布在许多节点上,以便它可以并行地对数据运行操作。如果数据大小太小,这可能会进一步减慢进程。我如何设置该值

最佳答案

默认情况下,它分为 200 个集合。您可以通过在 sql 上下文中使用 set 命令来更改它 sqlContext.sql("set spark.sql.shuffle.partitions=10"); .但是,您需要根据您的数据特征谨慎设置它。

关于sql - Spark导入数据时如何设置分区/节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com