parquet - 使用 Apache-Drill 查询镶木地板文件时出错:镶木地板记录读取器中的错误
问题描述
我需要使用 parquet 文件来进行一些分析并用信息丰富它们。但是,由于列数据类型(无符号整数)不兼容,我无能为力。
我尝试使用 Apache-drill,但是当我想执行一些查询时会发生同样的错误。
这是我要开始使用的查询和错误消息:SELECT * from dfs.'/home/artyom/addresses.parquet' LIMIT 5;
Error: INTERNAL_ERROR ERROR: Error in parquet record reader.
Message:
Hadoop path: /home/artyom/addresses.parquet/part.0.parquet
Total records read: 0
Row group index: 0
Records in row group: 34369585
Parquet Metadata: ParquetMetaData{FileMetaData{schema: message schema
{
optional binary ip (UTF8);
optional int64 ip_id (UINT_64);
optional int32 reputation (UINT_8);
optional int32 confidence (UINT_8);
optional float queries_ratio;
(...)
}
但是像 : 这样的查询SELECT ip from dfs.'/home/artyom/addresses.parquet' LIMIT 5;
或者SELECT queries_ratio from dfs.'/home/artyom/addresses.parquet' LIMIT 5;
像魅力一样工作。只有无符号整数列是一个问题。
我阅读了有关转换数据类型的 apache-drill 文档并尝试了几件事但没有成功。
有人可以帮我解决这个问题并告诉我是否有办法将 UINT_X 转换为兼容的 INTEGER 类型?从无符号整数到整数的转换对数据来说不是问题。我只需要了解如何修改 parquet 文件的列数据类型。非常感谢!
解决方案
您能否澄清一下,您使用的是哪个版本的 Drill?看起来读取 UINT 类型的问题已在DRILL-4764和DRILL-5971的范围内修复。
所以它应该适用于 Drill 1.14 及更高版本。
推荐阅读
- android - `RecylerView.ViewHolder` 实例应该被 GC 处理时是否有回调?
- python - 如何通过 python 脚本添加登录凭据?
- javascript - 当用户开始输入文本时,如何自动生成新的输入区域?
- c++ - 如何生成某些向量的笛卡尔积,其编号在 C++ 运行时给出?
- java - Selenium 和 nodeJs
- python - 在 Linux Ubuntu 上使用 python selenium webdriver chrome 时无法找到元素
- python - “HttpResponse”对象在 DRF 中没有属性“数据”
- reactjs - 无法显示数组 React 的元素
- python - 来自许多数据框的列表。我怎样才能得到最大和最小长度的df?
- c# - 包含和连接的慢速 EF 4 查询