在 Apache Drill 中查询十进制字段时出现异常
Exception whilst querying decimal fields in Apache Drill
我正在尝试 运行 在 apache drill 中执行以下查询。我正在使用以下查询查询存储在镶木地板文件中的数据
select
pan, count(*) as number_of_transactions,
terminal_id,
sum((cast(SETTLE_AMOUNT_IMPACT as double) * -1) / 100) as settle_amount_impact
from
dfs.`/iswdata/storage/products/superswitch/parquet/transactions`
where
pan like '506126%'
and terminal_id like '1%'
and sink_node_name like ('SWTDB%')
and source_node_name not like ('SWTDBLsrc')
and tran_completed = 1
and tran_reversed = 0
and tran_postilion_originated = 1
and tran_type = '01'
--and pan like '506126%0011'
group by
pan, terminal_id
我正在查询的数据的架构如下
post_tran_id LONG 2
post_tran_cust_id :LONG
settle_entity_id :INTEGER
batch_nr : INTEGER
prev_post_tran_id : LONG
next_post_tran_id : LONG
sink_node_name : STRING
tran_postilion_originated : DECIMAL
tran_completed : DECIMAL
tran_amount_req : DECIMAL
tran_amount_rsp : DECIMAL
settle_amount_impact : DECIMAL
tran_cash_req : DECIMAL
tran_cash_rsp : DECIMAL
tran_currency_code : STRING
tran_tran_fee_req : DECIMAL
tran_tran_fee_rsp : DECIMAL
tran_tran_fee_currency_code : STRING
tran_proc_fee_req : DECIMAL
tran_proc_fee_rsp : DECIMAL
tran_proc_fee_currency_code : STRING
settle_amount_req : DECIMAL
settle_amount_rsp : DECIMAL
settle_cash_req : DECIMAL
settle_cash_rsp : DECIMAL
settle_tran_fee_req : DECIMAL
settle_tran_fee_rsp : DECIMAL
settle_proc_fee_req : DECIMAL
settle_proc_fee_rsp : DECIMAL
settle_currency_code : STRING
然而,当我 运行 对数据集进行查询时,出现以下异常
SYSTEM ERROR: ClassCastException: org.apache.drill.exec.vector.NullableDecimal28SparseVector cannot be cast to org.apache.drill.exec.vector.VariableWidthVector
更重要的是,当我在 select 子句中包含小数字段时,会发生同样的错误。
拜托,有没有我遗漏或做错的事情,任何指针将不胜感激
亲切的问候
parquet table 中的小数值使用 BINARY 基本类型存储,但目前,Drill 不支持以二进制形式存储小数。
它将在 DRILL-6094 中修复,并将在 1.14 版本中提供。
我正在尝试 运行 在 apache drill 中执行以下查询。我正在使用以下查询查询存储在镶木地板文件中的数据
select
pan, count(*) as number_of_transactions,
terminal_id,
sum((cast(SETTLE_AMOUNT_IMPACT as double) * -1) / 100) as settle_amount_impact
from
dfs.`/iswdata/storage/products/superswitch/parquet/transactions`
where
pan like '506126%'
and terminal_id like '1%'
and sink_node_name like ('SWTDB%')
and source_node_name not like ('SWTDBLsrc')
and tran_completed = 1
and tran_reversed = 0
and tran_postilion_originated = 1
and tran_type = '01'
--and pan like '506126%0011'
group by
pan, terminal_id
我正在查询的数据的架构如下
post_tran_id LONG 2
post_tran_cust_id :LONG
settle_entity_id :INTEGER
batch_nr : INTEGER
prev_post_tran_id : LONG
next_post_tran_id : LONG
sink_node_name : STRING
tran_postilion_originated : DECIMAL
tran_completed : DECIMAL
tran_amount_req : DECIMAL
tran_amount_rsp : DECIMAL
settle_amount_impact : DECIMAL
tran_cash_req : DECIMAL
tran_cash_rsp : DECIMAL
tran_currency_code : STRING
tran_tran_fee_req : DECIMAL
tran_tran_fee_rsp : DECIMAL
tran_tran_fee_currency_code : STRING
tran_proc_fee_req : DECIMAL
tran_proc_fee_rsp : DECIMAL
tran_proc_fee_currency_code : STRING
settle_amount_req : DECIMAL
settle_amount_rsp : DECIMAL
settle_cash_req : DECIMAL
settle_cash_rsp : DECIMAL
settle_tran_fee_req : DECIMAL
settle_tran_fee_rsp : DECIMAL
settle_proc_fee_req : DECIMAL
settle_proc_fee_rsp : DECIMAL
settle_currency_code : STRING
然而,当我 运行 对数据集进行查询时,出现以下异常
SYSTEM ERROR: ClassCastException: org.apache.drill.exec.vector.NullableDecimal28SparseVector cannot be cast to org.apache.drill.exec.vector.VariableWidthVector
更重要的是,当我在 select 子句中包含小数字段时,会发生同样的错误。 拜托,有没有我遗漏或做错的事情,任何指针将不胜感激
亲切的问候
parquet table 中的小数值使用 BINARY 基本类型存储,但目前,Drill 不支持以二进制形式存储小数。
它将在 DRILL-6094 中修复,并将在 1.14 版本中提供。