在spark中,如果我們執行以下命令:
spark.sql("select * from parquet.`/Users/MyUser/TEST/testcompression/part-00009-asdfasdf-e829-421d-b14f-asdfasdf.c000.snappy.parquet`")
.show(5,false)
Spark 將讀取分布在作業節點/任務節點上的所有執行緒上。我們如何執行此命令并將其限制為一個執行緒?這可能嗎?
uj5u.com熱心網友回復:
如果你想對整個 spark 會話執行此操作,你可以將 shuffle 磁區(用于 reduce 操作的磁區數)和默認并行度(RDD 中用于轉換操作的磁區數)限制為 1:
spark.conf.set("spark.sql.shuffle.partitions",1)
spark.conf.set("spark.default.parallelism",1)
spark.sql("select * from parquet.`/Users/MyUser/TEST/testcompression/part-00009-asdfasdf-e829-421d-b14f-asdfasdf.c000.snappy.parquet`")
.show(5,false)
如果沒有,您可以在呼叫操作操作之前重新磁區資料框:
spark.sql("select * from parquet.`/Users/MyUser/TEST/testcompression/part-00009-asdfasdf-e829-421d-b14f-asdfasdf.c000.snappy.parquet`")
.repartition(1)
.show(5,false)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535528.html
標籤:斯卡拉阿帕奇火花apache-spark-sqlapache-spark-sql-重新分区
上一篇:在微服務架構中設計關系
