【问题标题】:Google DataProc Presto: how to write Presto query results to google cloud storage?Google DataProc Presto:如何将 Presto 查询结果写入谷歌云存储?
【发布时间】:2024-10-28 07:25:01
【问题描述】:

我有一个安装了 Presto 作为可选组件的 DataProc 集群。我的数据存储在谷歌云存储 (GCS) 中,我可以使用 Presto 进行查询。但是,我没有找到将查询结果写回 GCS 的方法。如果我登录到主节点并从那里运行 Presto 命令,我可以写入 hdfs,但它无法识别任何 GCS 位置。

如何将 Presto 查询结果写入 GCS?

【问题讨论】:

标签: google-cloud-storage presto google-cloud-dataproc


【解决方案1】:

您需要创建一个GCS支持的Hive外部表,例如:

gcloud dataproc jobs submit hive \
    --cluster <cluster> \
    --execute "
        CREATE EXTERNAL TABLE my_table(id  INT, name  STRING)
        STORED AS PARQUET
        location 'gs://<bucket>/<dir>/';"

然后将您的 Presto 查询结果插入到表中。

【讨论】:

  • 感谢您的回答。但是,有没有一种方法可以在不先创建表的情况下导出数据?当有很多列时,手动指定表架构会很不方便..
  • 另外,当您说“将 Presto 查询结果插入表中”时,您是指 insert into table my_table select * from tableA; 吗?如果是这样的话,我认为它并没有真正使用 presto 进行查询。它使用 Hive 进行查询和插入。你能澄清一下吗?
  • 可以先用 Hive 准备空表,然后再用 Presto 查询插入。或者,您可能会发现使用CREATE TABLE ... AS SELECT 查询导出为表指定的 GCS 位置会更容易