spark sql为配置单元表中的列返回null,而配置单元查询返回非null值

s71maibg  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(287)

我在Parquet格式的s3数据上创建了一个配置单元表,并用一个名为eventdate的列进行分区。
1) 使用配置单元查询时,它会返回表和文件架构中名为“headertime”的列的数据。

select headertime from dbName.test_bug where eventdate=20180510 limit 10

2) 在scala笔记本中,当直接从一个同样有效的特定分区加载文件时,

val session = org.apache.spark.sql.SparkSession.builder 
.appName("searchRequests") 
.enableHiveSupport() 
.getOrCreate;

val searchRequest = session.sqlContext.read.parquet("s3n://bucketName/module/search_request/eventDate=20180510")

searchRequest.createOrReplaceTempView("SearchRequest")

val exploreDF = session.sql("select headertime from SearchRequest where SearchRequestHeaderDate='2018-05-10' limit 100")

exploreDF.show(20)

这也会显示列“headertime”的值
3) 但是,当使用spark sql直接查询配置单元表时,如下所示,

val exploreDF = session.sql("select headertime from tier3_vsreenivasan.test_bug where eventdate=20180510 limit 100")

exploreDF.show(20)

它总是返回null。
我打开了parquet文件,看到列headertime中有值,但不确定sparksql为什么不能读取该列的值。
如果有人能指出sparksql从何处获得模式,这会很有帮助?我希望它的行为类似于Hive查询

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题