AWS Athena:“HIVE_BAD_DATA:解析列'X'时出错:空字符串”

2024-01-18

我想使用 OpenCSVSerde 在 AWS Athena 上基于 CSV 文件创建外部表。

CREATE EXTERNAL TABLE `table`(name string, value double, group string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ("separatorChar" = ",", "escapeChar" = "\\","skip.header.line.count"="1",  "serialization.null.format"="") 
LOCATION 's3://path' ; 

该文件包含“值”字段(双精度类型)的一些缺失值。它看起来像这样:

name,value,group    
name1,0.5,a
name2,0.2,a
name3,,a
name4,0.11,b

创建后,当我尝试运行一些查询(例如简单的“select * from table”)时,Athena 给出了以下错误:

HIVE_BAD_DATA: Error parsing column '1': empty String

正如您从创建外部表查询中看到的,我尝试添加 'serialization.null.format'='' 但它似乎不起作用。我发现的唯一解决方案是将列“值”定义为字符串,但这显然不是理想的解决方案(特别是如果您有很多这样的列)。

您知道如何解决这个问题吗?

谢谢


正如 Vamsi Prabhala 提到的那样,OpenCSVSerde 根本不支持这一点,来自文档 https://docs.aws.amazon.com/athena/latest/ug/csv-serde.html:

解析器无法识别定义为数值数据类型的列中的空值或 Null 值,将它们保留为默认数据类型 STRING。解决方法是将列声明为 STRING,然后将其 CAST 到 SELECT 查询或视图中。

因此,如果您确实想坚持使用 OpenCSVSerde,请像您一样创建表("serialization.null.format"=""不起作用):

CREATE EXTERNAL TABLE `table`(
    name string,
    value double,
    group string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "separatorChar" = ",",
    "escapeChar" = "\\",
    "skip.header.line.count"="1") 
LOCATION 's3://path'; 

然后创建一个视图:

CREATE VIEW "typed_table" AS
SELECT
"name",
CAST(
    "value" CASE
        "value"
        WHEN '' THEN NULL
        ELSE "value"
    END AS DOUBLE
),
"group"
FROM "table";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS Athena:“HIVE_BAD_DATA:解析列'X'时出错:空字符串” 的相关文章

随机推荐

  • 使用多个 JSON 对象设置单元格的文本

    我有一个简单的网络服务 可以将一些数据传递到表视图中 并且工作正常 这是我目前拥有的代码 cell detailTextLabel setText item objectForKey Ball 1 正如我所说 这完美地工作并显示球号 例如
  • 我可以将 vjslib.dll 放入应用程序的 /bin 目录中吗?

    我正在进行生产部署 不幸的是 我正在部署到一个严格控制的环境 今晚我不太可能获得运行完整 Visual J 可再发行 EXE 的许可 我们的应用程序当前抛出错误 表示找不到程序集 vjslib dll 我可以将其放入应用程序的垃圾箱中 然后
  • QML TableView从特定单元格获取数据(选定行+特定列)

    我有QMLTableView with QSqlQueryModel 我需要选择任何行并从表的每一列中获取数据以分隔TextField 这是 abonentstable h pragma once include
  • 如何从 URL 中删除网页扩展名? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想从 URL 中删除网页扩展名 有人给了我 htaccess 的代码 但当我打开重写模块时 它在本地主机上工作 但是当我在 Godaddy 上使用它
  • 多方peer.js应用程序

    我对 PeerJs 和 WebRTC 是全新的 我有一个 1 1 NodeJS PeerJS 应用程序在我的远程服务器上运行 效果很好 然而现在我想探索将其扩展到 1 N 模型 其中主机 ID 可以有多个对等点连接到它们 并且每个对等点都可
  • 如果任何源列为 true,则将布尔值聚合为 true

    假设我有下表 id column a column b column c 1 t f t 2 t f f 3 f t f 从上表中 我想 select rows from id 1 2 结果应该是 column a column b col
  • 除了最后一项之外,如何在所有项上设置边框底部

    如果我有一个ul 我如何设置所有的边框底部li除了最后一项之外的项目 我也在尝试使宽度border180 像素 这是我的代码 HTML ul class sideNav li a href history asp History a li
  • 长按注释时,注释图像会被 RedPushPin 替换

    我使用以下内容创建了自定义注释 MKAnnotationView mapView MKMapView mapView viewForAnnotation id
  • 提示用户输入汇编 ci20 seg 错误

    我目前正在 ci20 机器上开发一个小程序 提示用户输入整数值 然后将该值打印到屏幕上 我当前的代码 data prompt asciiz Please enter an integer message asciiz nValue ente
  • 蟒蛇时间偏移

    如何在 python 中应用当前时间的偏移量 换句话说 能够获取当前时间减去 x 小时和 或减去 m 分钟和 或减去 s 秒和 或减去 ms 毫秒 例如 curent time 18 26 00 000 offset 01 10 00 00
  • 单子值的案例

    有没有一种方法可以对 monad 中存储的值执行 case 而无需将名称绑定到它 即 不要这样做 c lt getChar case c of 有没有办法做到这一点 mcase getChar of 或者 如果可以部分应用 case 语句
  • 有没有更有效的方法将数组从 C++ 返回到 javascript?

    为了将类型化数组从 emscripten ed C 传递到 javascript 我想出了这段代码 include
  • 判断操作系统是否为Mac

    我最近做了很多谷歌搜索 试图找到一个简单 容易的 php 脚本来识别用户是否在 Mac 上 我想用它来告诉用户我告诉他们的键盘快捷键是 控制 还是 命令 我不需要了解浏览器什么的 只要电脑是Mac就可以了 这是我所要求的可能的概述 if o
  • 何时使用 babel.config.js 和 .babelrc

    我正在学习 Babel 想学习如何配置 Babel 我找到了两种配置 Babel 的方法 创建 babel config js 和 babelrc 文件 在什么情况下我们应该选择一个配置文件而不是另一个 来自文档 https babeljs
  • 计算单个进程的总磁盘 I/O

    我正在寻找一些工具 可以在单个进程结束后转储总磁盘 I O 到目前为止我的发现是 iotop 它实时显示每个进程的 i o 但不给出 流程结束后总计 iostat 它显示实时 I O 但 不告诉过程 例如 我有一些进程在后台运行 PID 为
  • 每天将自动增量列重置回 0

    postgresql中有没有办法让自动递增列在每天的指定时间重置为零 对于 cronjob 来说这可能是非常微不足道的 0 0 echo SELECT setval public my table id seq 1 false psql U
  • 云sql数据库导出导入问题

    从实例 第二代 导出 sql 数据库并将其导入到另一个 sql 实例时 出现以下错误 第 24 行出现错误 1839 HY000 GLOBAL GTID PURGED can only be set when GLOBAL GTID MOD
  • 了解 JQuery 是否可用的最佳方法? [复制]

    这个问题在这里已经有答案了 可能的重复 如何检查 jQuery 是否已加载以及什么版本 https stackoverflow com questions 6973941 how to check if jquery is loaded a
  • Visual Studio 2010 解决方案查找所有引用不起作用

    我有一个从 Visual Studio 2008 解决方案导入的 Visual Studio 2010 解决方案 查找所有引用 对其不起作用 我尝试在谷歌上进行一些搜索来尝试解决这个问题 但结果却是空手而归 VS2008 中的 查找所有引用
  • AWS Athena:“HIVE_BAD_DATA:解析列'X'时出错:空字符串”

    我想使用 OpenCSVSerde 在 AWS Athena 上基于 CSV 文件创建外部表 CREATE EXTERNAL TABLE table name string value double group string ROW FOR