Apache spark 未分区的大型数据集连接另一个已分区的大型数据集。结果数据集是否已分区?
在Apache spark 未分区的大型数据集连接另一个已分区的大型数据集。结果数据集是否已分区?,apache-spark,Apache Spark,在Spark上,我有一个法国上市公司的企业数据集。它很大(1 Gb CSV文件),加载时没有分区 我还有另一个数据集:etablishments(这些公司的),也是一个大文件,他们在法国的一个部门有一个位置设置它们。这个部门有一个从01到98的数字,这个数字用于划分电子表格 当我执行enterprise.join(etablishments,joinKey)结果数据集是什么? -它是否存储在etablishment分区上(这样比较方便), -还是没有分割 如果我做了一个etablishments
Spark
上,我有一个法国上市公司的企业数据集。它很大(1 Gb CSV文件),加载时没有分区
我还有另一个数据集:etablishments(这些公司的),也是一个大文件,他们在法国的一个部门有一个位置设置它们。这个部门有一个从01到98的数字,这个数字用于划分电子表格
当我执行enterprise.join(etablishments,joinKey)
结果数据集是什么?-它是否存储在etablishment分区上(这样比较方便),
-还是没有分割 如果我做了一个
etablishments.join(企业,joinKey)
,这会是一样的吗
val ds1 = df0.repartition(765)
val ds2 = df0.repartition(765)
sqlContext.setConf("spark.sql.shuffle.partitions", "765")
val joined = ds1.join(ds2, ds1("time_asc") === ds2("time_asc"), "outer")
根据默认情况(如果还没有),会对联接进行哈希处理,并创建和处理765个填充或空分区。结果输出DF也有765个分区
如果您aggr、join等未设置上述参数,则Spark 200默认值将适用,或根据Spark会话中上次设置的值
对于较小的广播表,输出上产生的分区数将等于非广播表(较大的表)中的分区数
希望这有帮助。先试试怎么样?我试过了,但我不知道如何检查。我的程序是一个运行Spark的嵌入式jar。它不是在Spark web UI上,也不是任何工具上能够显示块在哪里。请通过Spark运行。请解释一下java应用程序是本地模式下的自动可执行jar,并且没有其他Spark环境集。我运行了一个
java-jar app.jar
,它确实有效。我没有办法检查这些块放在哪里。除非控制台日志中显示了这一点。