我正在尝试查询具有红移光谱的配置单元视图,但它给了我以下错误:
SQL Error [500310] [XX000]: [Amazon](500310) Invalid operation: Assert
Details:
-----------------------------------------------
error: Assert
code: 1000
context: loc->length() > 5 && loc->substr(0, 5) == "s3://" -
query: 12103470
location: scan_range_manager.cpp:272
process: padbmaster [pid=1769]
-----------------------------------------------;
是否可以从红移光谱查询配置单元视图?我使用的是配置单元元存储(不是粘合数据目录)。
我想要有一个视图来限制对原始表的访问,其中包含一组有限的列和分区。另外,因为我的原始表(Parquet数据)有一些Map字段,所以我想做一些类似的操作,以便更容易从redshift进行查询,因为在redshift中处理Map字段有点复杂:
CREATE view my_view AS
SELECT event_time, event_properties['user-id'] as user_id, event_properties['product-id'] as product_id, year, month, day
FROM my_events
WHERE event_type = 'my-event' -- partition
我可以从spectrum中查询表myu events,但是它很乱,因为properties是一个map字段,而不是一个struct,所以我需要用红移将它分解成几行。
谢谢
1条答案
按热度按时间snvhrwxg1#
从错误的Angular 来看,在查询外部表和视图时,spectrum似乎总是在寻找s3路径。这对于外部表是有效的,因为这些表总是有一个位置,但是视图永远不会有一个显式的s3位置。
如果是Hive视图,
loc->length()
将返回0,并且整个语句将返回False
并导致Assert错误。对此的确认可以是第二条:
它期望的位置是一个s3路径,如果我们计算其中的字符数
"s3://"
它是5
,这也证实了第一条:看起来spectrum不支持配置单元视图(或者通常不支持任何没有显式s3路径的对象)