有没有一种方法可以直接从基于avro模式的parquet文件在Amazon Athena中创建表?模式被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。
我看到了这个,还有另一个复制品
但它们与Hive直接相关,这对雅典娜不起作用。理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上定义它。
对于Athena,这似乎是不可能的,因为< code>avro.schema.url不是一个受支持的属性。
不支持表属性avro.schema.url。
您可以使用< code>avro.schema.literal(您必须将avro json模式复制到查询中),但是我在后来查询数据时仍然遇到了问题。
奇怪的错误,如:<code>SYNTAX_ERROR:第1:8行:在没有FROM子句的查询中不允许SELECT*</code>
现在使用AWS Glue或多或少可以做到这一点。Glue可以抓取一堆不同的数据源,包括S3上的Parket文件。发现的表被添加到Glue数据曲库中,并可从Athena查询。根据您的需要,您可以安排Glue爬虫定期运行,也可以使用Glue API定义和运行爬虫。
如果有许多单独的大块数据共享一个模式,还可以使用分区表来减少Athena可用的新负载的开销。例如,我有一些每日转储,它们加载到按日期分区的表中。只要模式不变,您只需执行MSCK修复表
。
问题内容: 有没有办法从Java创建镶木地板文件? 我的内存中有数据(java类),我想将其写入一个Parquet文件中,以便以后从apache-drill中读取它。 有没有简单的方法可以做到这一点,例如将数据插入sql表? 得到它了 谢谢您的帮助。 结合答案和此链接,我能够创建一个实木复合地板文件并用钻头将其读回。 问题答案: 不建议使用ParquetWriter的构造函数(1.8.1),但不建
我有一个数据帧,它是由运行特定日期的每日批处理创建的,然后保存在HDFS(Azure Data Lake Gen 2)中。 它是用这样的东西保存的 如您所见,我没有对数据帧进行分区,因为它只包含一个日期。 例如,第一天的第一个文件将存储在文件夹中 交易/2019/08/25 然后第二天,它就会在文件夹里 贸易/2019/08/26 问题是,当所有数据都放好后,日期上的过滤器谓词是否仍会被按下,HD
我的 hdfs 中有 Parquet 文件。我想将这些镶木地板文件转换为csv格式
我的Snowflake表包含一个创建为的字段,默认为作为Snowflake数据类型。 当我用COPY命令将这个表以parquet格式卸载到s3时,我希望保留整个模式,包括这个字段的精度。但是,生成的parquet具有。 是否可以强制保持雪花数据类型精度不变?
我有一个avro格式的数据流(json编码),需要存储为镶木地板文件。我只能这样做, 把df写成拼花地板。 这里的模式是从json中推断出来的。但是我已经有了avsc文件,我不希望spark从json中推断出模式。 以上述方式,parquet文件将模式信息存储为StructType,而不是avro.record.type。是否也有存储avro模式信息的方法。 火花 - 1.4.1
有一个AWS胶水爬虫,它正在创建一个包含拼花文件的S3目录中所有表的数据目录。 我需要将这些文件/表的内容复制到Redshift表。我有几个表,Redshift无法支持Parket文件数据大小。是不够的。 在理想情况下,希望截断这些表。 如何使用COPY命令将此数据加载到红移中?如果我使用spectrum,我只能使用户从外部表插入到红移表,我知道这比批量复制慢?