我有一个以三拼板格式在s3 DATA之上创建的配置单元表,并由一个名为eventdate的列进行分区。
1)当使用HIVE QUERY时,它返回名为" headertime"的列的数据。这是表格和文件的模式。
select headertime from dbName.test_bug where eventdate=20180510 limit 10
2)从scala NOTEBOOK中,当直接从特定分区加载文件时,
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直接查询HIVE表时,如下所示,
val exploreDF = session.sql("select headertime from tier3_vsreenivasan.test_bug where eventdate=20180510 limit 100")
exploreDF.show(20)
它始终保持返回null。
我打开了镶木地板文件,看到列headertime存在值,但不确定为什么spark SQL无法读取该列的值。
如果有人可以指出spark SQL获取架构的位置会有所帮助吗?我期待它的行为类似于HIVE QUERY