Hive 使用红移光谱查询配置单元视图
我试图查询具有红移光谱的配置单元视图,但它给了我以下错误:Hive 使用红移光谱查询配置单元视图,hive,amazon-redshift,amazon-redshift-spectrum,Hive,Amazon Redshift,Amazon Redshift Spectrum,我试图查询具有红移光谱的配置单元视图,但它给了我以下错误: SQL Error [500310] [XX000]: [Amazon](500310) Invalid operation: Assert Details: ----------------------------------------------- error: Assert code: 1000 context: loc->length() > 5 && loc->
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]
-----------------------------------------------;
是否可以从红移光谱查询配置单元视图?我使用的是Hive Metastore(不是Glue数据目录)
我希望有一个视图,用一组有限的列和分区来限制对原始表的访问。另外,因为我的原始表(拼花数据)有一些贴图字段,所以我想做一些类似的事情,以便更容易从红移中查询,因为在红移中处理贴图字段有点复杂:
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查询表my_events,但它很混乱,因为properties是一个映射字段,而不是一个结构,所以我需要用红移将它分解成几行
感谢查看错误,当查询外部表和视图时,Spectrum似乎总是查找S3路径。 这对于外部表是有效的,因为这些表总是有一个位置,但视图永远不会有显式的S3位置
Error type -> Assert
Error context -> context: loc->length() > 5 && loc->substr(0, 5) == "s3://"
如果是蜂巢视图,
loc->length()
将返回0,整个语句将返回False
,并导致断言错误
对此的确认可以是第二条:
loc->substr(0, 5) == "s3://"
它期望位置为S3路径,如果我们计算“S3://”中的字符数,则为5
,这也确认了第一条:
loc->length() > 5
看起来Spectrum不支持配置单元视图(或者通常不支持任何没有显式S3路径的对象)好的,谢谢!我考虑了更多,对于Spectrum来说,一般来说不支持配置单元视图是有意义的,因为例如,我的视图是用Spark创建的,可以使用一些红移Spectrum中不存在的特定于Spark的函数。