【发布时间】:2020-07-12 05:13:19
【问题描述】:
我有一个简单的 spark-submit 工作:
- 读取 CSV 文件
- 执行 SQL 聚合和排序
- 显示聚合
- 将结果存储到镶木地板
我将随机分区保持在 4 个,并且可以看到总共创建了 7 个阶段(4 个用于保存镶木地板,2 个用于显示操作,1 个用于我猜是读取文件,不确定)。
我有几个问题在这里:
-
为什么拼花存储有 4 个阶段,不超过或少于与节目中其他阶段类似的东西?
-
为什么 Spark SQL 查询在后台启动阶段?
代码
from pyspark.sql import SparkSession
from pyspark.sql.functions import lit
from pyspark.context import SparkContext
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
spark.conf.set("spark.sql.shuffle.partitions",4)
df = spark.read.csv('/raj/data/test.csv', header=True)
df.createOrReplaceTempView("visitors")
sqldf=spark.sql("select NAMELAST,NAMEFIRST,NAMEMID,count(*) as frequency from visitors group by NAMELAST,NAMEFIRST,NAMEMID order by count(*) desc ")
sqldf.show()
sqldf.write.mode("overwrite").parquet("/tmp/data/key=1")
【问题讨论】:
-
我没听懂你? @thebluephantom
-
主配置是什么?只是在 linux 虚拟机或集群上?我假设环境很小
-
是的,一台具有 16gb 内存和 4 个内核的机器,在主从独立架构上运行 Spark,在 dockers @thebluephantom 中运行
-
好的,很清楚,但是您提交给 spark 独立版?
-
其实无所谓
标签: apache-spark pyspark apache-spark-sql