【问题标题】:Insert overwrite directory using Presto like Hive使用 Presto 像 Hive 插入覆盖目录
【发布时间】:2020-01-12 13:27:09
【问题描述】:

在 Hive 中,下面的语句将输出foo^Bbar^Abaz

insert overwrite directory 's3://bucket-name/foobarbaz'
row format delimited
fields terminated by '\001'
select split('foo,bar', ','), 'baz';

在 Presto 中,我运行了以下语句:

insert overwrite directory 's3://bucket-name/foobarbaz'
select split('foo,bar', ','), 'baz';

有了这个结果:["foo","bar"]^Abaz

适用于数组和结构的插入覆盖目录的等效 Presto 子句是什么?

Presto 似乎将我的数组类型转换为 json 字符串,但我希望将其格式化为具有集合项和映射键分隔符支持的 Hadoop 规范。

【问题讨论】:

  • 您是否打算插入 3 列(平面)'foo', 'bar', 'baz'?列数是固定的吗?
  • 在这种情况下,应插入 2 列。每条记录应包含列:array, varchar.

标签: hadoop hive presto


【解决方案1】:

尝试在create table DDL 中指定 COLLECTION ITEMS TERMINATED BY。

row_format DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char] ...

【讨论】:

  • 我认为这适用于表格。 insert overwrite directory 没有可从中提取的表架构元数据。
  • @ScottNguyen 是的,你是对的。它仅适用于表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
相关资源
最近更新 更多