从镶木地板表中选择在蜂巢中不返回任何内容

Posted

技术标签:

【中文标题】从镶木地板表中选择在蜂巢中不返回任何内容【英文标题】:select from parquet table returns nothing in hive 【发布时间】:2016-07-28 04:52:27 【问题描述】:

我只是按照这个创建了一个简单的镶木地板文件。

Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“employee”)
Scala> employee.write.parquet(“employee.parquet”)

parquet 文件被创建并且很好。

然后,我创建一个 hive 外部表,提供这个 employee.parquet 作为我的 location 。请注意这是正常的文件系统路径,没有 s3:// 或 hdfs。

这是我的配置单元表创建查询:

create external table employees (a String, b String, c Int) stored as PARQUET location '/Users/Sumit/Documents/Repos/misc_codes/employees.parquet';

它说OK,表示表已创建。它甚至出现在展示表中;

但是当我这样做时:

select * from employees;

它什么也不返回,只是一个 OK。我确实相信我的 employee.json 中有 3 条记录,如下所示:

"age": 50, "name": "adi", "title": "sir"
"age": 60, "name": "jyoti", "title": "mam"
"age": 14, "name": "sumit", "title": "baalak"

它已成功生成为镶木地板文件,我哪里出错了?

谢谢,

【问题讨论】:

【参考方案1】:

尽管列的顺序无关紧要,但 hive 表中的列名应与 json 文件中的名称匹配 -

create external table employees (name String, title String, age Int) stored as PARQUET location '/Users/Sumit/Documents/Repos/misc_codes/employees.parquet';

【讨论】:

以上是关于从镶木地板表中选择在蜂巢中不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

无法从镶木地板中读取零件文件

从镶木地板自动推断模式/有选择地将字符串转换为浮点数

从具有时间戳的镶木地板蜂巢表中读取火花

Sqoop 导入不适用于蜂巢镶木地板

如何从镶木地板文件中获取架构/列名?

如何从镶木地板文件创建表格