当前位置: 首页 > 知识库问答 >
问题:

从S3读取镶木地板文件是否需要hive metastore?

席兴朝
2023-03-14

我正在尝试使用火花在S3文件中生成拼花文件,目的是稍后可以使用presto从拼花中查询。基本上,它看起来是这样的,

<代码>Kafka-

我能够使用Spark在S3中生成拼花并且工作正常。现在,我正在查看presto,我想我发现它需要hive meta store才能从拼花中查询。即使拼花保存模式,我也无法让presto读取我的拼花文件。那么,这是否意味着在创建拼花文件时,火花作业还必须将元数据存储在hive meta store中?

如果是这种情况,有人能帮我找到一个示例来说明它是如何完成的吗?更糟糕的是,我的数据模式正在发生变化,所以为了处理它,我正在火花作业中创建一个编程模式,并在创建拼花文件时应用它。而且,如果我在hive metastore中创建模式,则需要考虑到这一点。

或者,如果有更好的替代方法,你能解释一下吗?

共有1个答案

闻修筠
2023-03-14

您将拼花文件保存在S3上。Presto的S3功能是Hive连接器的一个子组件。正如您所说,您可以让Spark在Spark中定义表,也可以使用Presto来定义表,例如。

create table hive.default.xxx (<columns>) 
with (format = 'parquet', external_location = 's3://s3-bucket/path/to/table/dir');

(根据Hive metastore版本及其配置,您可能需要使用s3a而不是s3)

从技术上讲,应该可以创建一个连接器,从拼花头推断表的模式,但我不知道现有的连接器。

 类似资料:
  • 我有一个数据帧,它是由运行特定日期的每日批处理创建的,然后保存在HDFS(Azure Data Lake Gen 2)中。 它是用这样的东西保存的 如您所见,我没有对数据帧进行分区,因为它只包含一个日期。 例如,第一天的第一个文件将存储在文件夹中 交易/2019/08/25 然后第二天,它就会在文件夹里 贸易/2019/08/26 问题是,当所有数据都放好后,日期上的过滤器谓词是否仍会被按下,HD

  • 问题内容: 有没有办法从Java创建镶木地板文件? 我的内存中有数据(java类),我想将其写入一个Parquet文件中,以便以后从apache-drill中读取它。 有没有简单的方法可以做到这一点,例如将数据插入sql表? 得到它了 谢谢您的帮助。 结合答案和此链接,我能够创建一个实木复合地板文件并用钻头将其读回。 问题答案: 不建议使用ParquetWriter的构造函数(1.8.1),但不建

  • 有一个AWS胶水爬虫,它正在创建一个包含拼花文件的S3目录中所有表的数据目录。 我需要将这些文件/表的内容复制到Redshift表。我有几个表,Redshift无法支持Parket文件数据大小。是不够的。 在理想情况下,希望截断这些表。 如何使用COPY命令将此数据加载到红移中?如果我使用spectrum,我只能使用户从外部表插入到红移表,我知道这比批量复制慢?

  • 我一直在阅读有关此主题的一些问题以及几个论坛,并且在所有这些论坛中,他们似乎都提到从Spark中产生的每个. parket文件应该是64MB或1GB大小,但仍然无法让我想到哪些案例场景属于每个这些文件大小以及除了HDFS将它们拆分为64MB块之外的原因。 我当前的测试场景如下。 我目前每天处理2.5GB到3GB的数据,这些数据每年将被拆分并保存到每日存储桶中。n等于4或48的原因只是为了测试,因为

  • 业务案例是,我们希望通过一个列作为分区,将一个大的拼花文件分割成多个小文件。我们已经使用data frame . partition(“XXX”)进行了测试。写(...).用了大约1个小时,记录了10万个条目。因此,我们将使用map reduce在不同的文件夹中生成不同的拼花文件。示例代码: 上面的例子只是生成一个文本文件,如何用multipleoutputformat生成一个parquet文件?

  • 有没有一种方法可以直接从基于avro模式的parquet文件在Amazon Athena中创建表?模式被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。 我看到了这个,还有另一个复制品 但它们与Hive直接相关,这对雅典娜不起作用。理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上定义它。