我正在尝试使用spark在s3文件中生成parquet文件,目的是以后可以使用presto从parquet查询。基本上是这样的, Kafka-->Spark-->Parquet<--Presto
我能够生成Parquet在s3使用Spark和它的工作良好。现在,我正在研究presto,我想我发现的是它需要Hive元存储来从parquet查询。即使parquet保存了模式,我也不能让presto读取我的parquet文件。那么,这是否意味着在创建Parquet文件时,spark作业还必须在hive meta store中存储元数据?
如果是这样的话,有人能帮我找一个例子来说明这是怎么做的吗。为了解决这个问题,我的数据模式正在改变,所以为了解决这个问题,我在spark job中创建了一个编程模式,并在创建parquet文件时应用它。而且,如果我在hivemetastore中创建模式,则需要考虑到这一点。
或者如果有更好的替代方法,你能解释一下吗?
1条答案
按热度按时间dbf7pr2w1#
你把Parquet文件放在s3上。presto的s3功能是hive连接器的一个子组件。正如您所说,您可以让spark在spark中定义表,也可以使用presto。
(根据配置单元元存储版本及其配置,您可能需要使用
s3a
而不是s3
.)从技术上讲,应该可以创建一个连接器,从Parquet头推断出表的模式,但我不知道现有的连接器。