【问题标题】:How can I create an external table using textfile with presto?如何使用带有 presto 的文本文件创建外部表?
【发布时间】:2018-06-30 04:51:07
【问题描述】:

我在 hdfs 目录 /user/bzhang/filefortable 中有一个 csv 文件:

123,1

我使用以下内容在 hive 中使用 presto 创建一个外部表:

create table hive.testschema.au1 (count bigint, matched bigint) with (format='TEXTFILE', external_location='hdfs://192.168.0.115:9000/user/bzhang/filefortable');

但是当我运行 select * from au1 时,我得到了

presto:testschema> select * from au1;
 count | matched
-------+---------
 NULL  | NULL

我将逗号更改为 TAB 作为分隔符,但它仍然返回 NULL。但是如果我将 csv 修改为

123

只有 1 列,select * from au1 给了我:

presto:testschema> select * from au1;
 count | matched
-------+---------
 123  | NULL

所以也许我的文件格式或其他什么有问题?

【问题讨论】:

    标签: hive presto


    【解决方案1】:

    我想表格的字段分隔符是'\u0001'。

    您可以将 ',' 更改为 '\u0001' 或将字段分隔符更改为 ',' ,然后检查您的问题是否已解决

    【讨论】:

    • 我多次误读了这个答案,所以澄清一下——Presto 期望带有format = 'TEXTFILE' 的源文件使用二进制字符0x1 作为字段分隔符。截至目前,it's not possible 使用 ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 方法在 Presto 中解决此问题。您必须提供一个0x1-separated 文件才能正确读取它
    • 抱歉我的表情不好。虽然您不能在 presto 中进行,但您可以在 hive 中进行此修改,并且 presto 可以识别如果它们共享相同的 hive 元存储
    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2017-07-18
    • 2019-10-30
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多