我有一个简单的文本表(以“,”分隔),格式如下:
orderID INT, CustID INT, OrderTotal FLOAT, OrderNumItems INT, OrderDesc STRING
我想将此数据插入Parquet地板表中:我使用以下方法创建了该表:
CREATE TABLE parquet_test (orderID INT, CustID INT, OrderTotal FLOAT,
OrderNumItems INT, OrderDesc STRING)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' stored as
INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat';
但是当我试图用
insert overwrite table parquet_small_orders select * from small_orders;
它失败了。有什么想法吗?
5条答案
按热度按时间z9gpfhce1#
在配置单元服务器端收到的错误消息是什么?
我也有类似的问题。在配置单元服务器日志中,我看到一些堆内存问题。
我可以使用mapred-site.xml中的更高值来解决hadoop安装中的问题
au9on6nz2#
为我工作;见下文。我们看不到您的csv表定义,但我相信您可能需要给它定界符?不管怎样,我的代码应该有用。
马特
2o7dmzc53#
你遵循这些步骤了吗?
下载
parquet-hive-bundle-1.5.0.jar
修订hive-site.xml
包括:q43xntqr4#
我将分享我刚刚测试的东西,它工作得非常好。我知道这可能是一个版本相关的问题,而hive此时本可以解决。不管怎样,我都会解释我刚才做了什么,
1检查原始数据
$cat myfile.txt文件
2装载指向文件的配置单元表
4检查配置单元表是否正常工作。注意,我添加了一个忽略第一行的句子,这通常是csv文件的头。
从mydb.orders中选择*;
5 parquet 安装台:
6将数据从csv配置单元表插入配置单元Parquet表(过程中转换为Parquet)
最后,我再次检查了数据转换是否正确,并对
myDB.parquet_test
. 为了100%确定数据在Parquet地板上,我去了/my/path/to/parquet
我仔细检查了一下那些文件是否在Parquet地板里。我不确定你的问题是不是因为你没有跳过文件的头或者你正在使用的版本,但是我刚才解释的这些步骤还是很好的。polhcujo5#
matthieu lieber的答案描述了如何将数据加载到Parquet地板表。
在你发布下一个问题之前有几件事。
请说明您使用的版本。parquet在0.13之前的配置单元版本中本机不受支持,您需要添加一些显式jar来获得功能。
请添加日志/错误消息。““失败”是对错误的模糊描述,它使调试变得困难。您加载数据的方式看起来还可以,应该可以。然而,一份日志会让事情清楚地表明问题所在。
如果这仍然是一个悬而未决的问题,您可以参考cloudera的文档,了解如何将parquet与hive结合使用的一些基础知识。
谢谢!