给定由某个\字段(int类型)分区的hive表,其中数据存储为avro文件,我想使用sparksql查询表,这样返回的Dataframe必须已经由某个\字段(用于分区)分区。
查询看起来就像
SELECT * FROM some_table
默认情况下,spark不会这样做,返回的数据\u frame.rdd.partitioner是none。
获得结果的一种方法是在查询后通过显式重新分区,但可能有更好的解决方案。
HDP2.6,Spark2。
谢谢。
给定由某个\字段(int类型)分区的hive表,其中数据存储为avro文件,我想使用sparksql查询表,这样返回的Dataframe必须已经由某个\字段(用于分区)分区。
查询看起来就像
SELECT * FROM some_table
默认情况下,spark不会这样做,返回的数据\u frame.rdd.partitioner是none。
获得结果的一种方法是在查询后通过显式重新分区,但可能有更好的解决方案。
HDP2.6,Spark2。
谢谢。
1条答案
按热度按时间bxgwgixi1#
首先,您必须区分
Dataset
以及转换后的RDD[Row]
. 无论前者的执行计划是什么,后者都不会有什么结果Partitioner
:但是内部
RDD
,可能有Partitioner
:然而,这不太可能对您有所帮助,因为到今天(spark2.2),数据源api还不知道物理存储信息(除了简单的分区修剪)。在即将到来的数据源api中,这应该会改变。详见jira票(spark-15689)及设计文件。