scala - 在Hive表中加载 Parquet 文件将返回所有NULL

标签 scala hadoop hive

我几乎没有以 Parquet 格式存储在HDFS中的文件,并且我试图在配置单元中创建一个新的外部表,该表应该指向该数据文件。

因此,我使用以下命令在 hive 中创建了一个表:

CREATE EXTERNAL TABLE ORDERS_P (
ORDERID INT, 
ORDER_DATE BIGINT,
CUSTOMER_ID INT,
STATUS STRING)
STORED AS PARQUET
LOCATION 'hdfs:///user/cloudera/retail/parquet/orders';

表已创建,但是当我在 hive 中对表运行查询时-
SELECT * FROM ORDERS_P LIMIT 10

它返回除ORDER_DATE列以外的所有NULL值-
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL
NULL    1402729200000   NULL    NULL

我使用spark-shell验证了这些文件中是否存在数据。不知道我在做什么错。任何帮助表示赞赏。

最佳答案

您可能需要将您的配置单元版本升级到1.2或最新版本(在1.1.0或更早版本中),不支持 Parquet 的所有数据类型。

请检查link,在1.2.0之后添加了支持。

关于scala - 在Hive表中加载 Parquet 文件将返回所有NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40093728/

相关文章:

hadoop - 如何使用另一个表中的特定列值在 Hive 中创建表

amazon-web-services - 无法在AWS中使用Elephant-Bird和Hive对Protobuf(2.6.1)数据进行反序列化

hadoop - 在具有连接条件的配置单元中删除的解决方法

hadoop - HIVE中的MAP SIDE JOIN中的错误

scala - Heroku 的 Play/scala 应用停止运行

scala - 在 Scala 中使用通配符

javascript - Scala函数什么时候执行

java - 从 Spring RESTful 服务运行 Spark 作业

hadoop - 我需要一个 Hive 示例项目进行练习。如何处理大型数据库表?我们如何在 Hive 中实际实现查询?

sql - 从3张 table 中选择HIVE