Apache spark 火花测井;最小键=null,最大键=null;在读取ORC文件时

Apache spark 火花测井;最小键=null,最大键=null;在读取ORC文件时,apache-spark,spark-dataframe,orc,Apache Spark,Spark Dataframe,Orc,我试图通过Spark将一个数据帧(比如100条记录)与一个ORC文件连接起来,该文件包含1亿条记录(每条记录可以增加到40-50亿字节)。它也是使用Spark hiveContext API创建的 ORC文件创建代码 //fsdtRdd is JavaRDD, fsdtSchema is StructType schema DataFrame fsdtDf = hiveContext.createDataFrame(fsdtRdd,fsdtSchema); fsdtDf.write().mode

我试图通过Spark将一个数据帧(比如100条记录)与一个ORC文件连接起来,该文件包含1亿条记录(每条记录可以增加到40-50亿字节)。它也是使用Spark hiveContext API创建的

ORC文件创建代码

//fsdtRdd is JavaRDD, fsdtSchema is StructType schema
DataFrame fsdtDf = hiveContext.createDataFrame(fsdtRdd,fsdtSchema);
fsdtDf.write().mode(SaveMode.Overwrite).orc("orcFileToRead");
HiveContext hiveContext = new HiveContext(sparkContext);
DataFrame orcFileData= hiveContext.read().orc("orcFileToRead");
// allRecords is dataframe
DataFrame processDf = allRecords.join(orcFileData,allRecords.col("id").equalTo(orcFileData.col("id").as("ID")),"left_outer_join");
processDf.show();
ORC文件读取代码

//fsdtRdd is JavaRDD, fsdtSchema is StructType schema
DataFrame fsdtDf = hiveContext.createDataFrame(fsdtRdd,fsdtSchema);
fsdtDf.write().mode(SaveMode.Overwrite).orc("orcFileToRead");
HiveContext hiveContext = new HiveContext(sparkContext);
DataFrame orcFileData= hiveContext.read().orc("orcFileToRead");
// allRecords is dataframe
DataFrame processDf = allRecords.join(orcFileData,allRecords.col("id").equalTo(orcFileData.col("id").as("ID")),"left_outer_join");
processDf.show();
读取(本地)火花日志

虽然Spark作业成功完成,但我认为它无法利用ORC索引文件功能,因此无法在继续之前检查整个ORC数据块

问题

--这是正常行为,还是我必须在以ORC格式保存数据之前设置任何配置

--如果它是正常的,那么最好的加入方式是什么,以便我们丢弃磁盘级别上的不匹配记录(可能只加载ORC数据的索引文件)