Spark SQL为HIVE表中的列返回null,而HIVE查询返回非空值

时间:2018-05-11 19:18:37

标签: apache-spark hive apache-spark-sql

我有一个以三拼板格式在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

0 个答案:

没有答案