Amazon s3 文本必须在2处以“}”结尾[字符3第1行] 雅典娜以普雷斯托为原型。您可以直接使用Presto(例如,在EMR上使用Presto),它将在错误响应中报告有问题的文件路径。(您可能需要在Presto CLI中使用--debug选项来获取完整的错误响应,或者从

Amazon s3 文本必须在2处以“}”结尾[字符3第1行] 雅典娜以普雷斯托为原型。您可以直接使用Presto(例如,在EMR上使用Presto),它将在错误响应中报告有问题的文件路径。(您可能需要在Presto CLI中使用--debug选项来获取完整的错误响应,或者从,amazon-s3,amazon-athena,Amazon S3,Amazon Athena,文本必须在2处以“}”结尾[字符3第1行] 雅典娜以普雷斯托为原型。您可以直接使用Presto(例如,在EMR上使用Presto),它将在错误响应中报告有问题的文件路径。(您可能需要在Presto CLI中使用--debug选项来获取完整的错误响应,或者从Presto Web UI获取)。我不知道如何直接从雅典娜那里获得相同的信息。你的数据的参考文件格式是什么?是JSON/CSV吗?你的DDL是什么样子的?你遇到过吗?建议使用SELECT“$PATH”,*从您的_列为NULL的_表中来识别格式不

文本必须在2处以“}”结尾[字符3第1行]


雅典娜以普雷斯托为原型。您可以直接使用Presto(例如,在EMR上使用Presto),它将在错误响应中报告有问题的文件路径。(您可能需要在Presto CLI中使用
--debug
选项来获取完整的错误响应,或者从Presto Web UI获取)。我不知道如何直接从雅典娜那里获得相同的信息。你的数据的参考文件格式是什么?是JSON/CSV吗?你的DDL是什么样子的?你遇到过吗?建议使用
SELECT“$PATH”,*从您的_列为NULL的_表中
来识别格式不正确的文件records@IlyaKisil我找不到那一点。我也不知道哪列是问题所在。从中,我假设您知道哪列的格式不正确,即
profile.score
(一个字符串而不是整数)。Athena基于Presto。您可以直接使用Presto(例如,在EMR上使用Presto),它将在错误响应中报告有问题的文件路径。(您可能需要在Presto CLI中使用
--debug
选项来获取完整的错误响应,或者从Presto Web UI获取)。我不知道如何直接从雅典娜那里获得相同的信息。你的数据的参考文件格式是什么?是JSON/CSV吗?你的DDL是什么样子的?你遇到过吗?建议使用
SELECT“$PATH”,*从您的_列为NULL的_表中
来识别格式不正确的文件records@IlyaKisil我找不到那一点。我也不知道哪一列是问题所在。从中,我假设您知道哪一列的格式不正确,即
profile.score
(一个字符串而不是整数)。您能否验证您的表是否使用
'org.openx.data.jsonserde.jsonserde'
,并且具有SerDe属性
'ignore.malformed.json'='true'
。另一方面,可能只有当文件结构格式不正确时,这种方法才有效,例如,每行不止一条记录,行尾有逗号,或者json是未声明的版本。然而,从JSON的角度来看,您的所有记录都非常好,但它们只是不一致。我可以确认这些属性已启用。JSON格式很好,但是int应该是一个字符串。我所能想到的是手动方法(如果你有很多数据,这可能会很昂贵)。尝试执行
从regexp类似(“$PATH”,“regex for directories”)的\u表中选择COUNT(*)
。如果这不会产生错误,则该正则表达式上的文件是正常的。您能否验证您的表是否使用了
'org.openx.data.jsonserde.jsonserde'
,并且具有SerDe属性
'ignore.malformed.json'='true'
。另一方面,可能只有当文件结构格式不正确时,这种方法才有效,例如,每行不止一条记录,行尾有逗号,或者json是未声明的版本。然而,从JSON的角度来看,您的所有记录都非常好,但它们只是不一致。我可以确认这些属性已启用。JSON格式很好,但是int应该是一个字符串。我所能想到的是手动方法(如果你有很多数据,这可能会很昂贵)。尝试执行
从regexp类似(“$PATH”,“regex for directories”)的\u表中选择COUNT(*)
。如果这不会产生错误,则该正则表达式上的文件是正常的。
CREATE EXTERNAL TABLE my.data (
  `id` string,
  `timestamp` string,
  `profile` struct<
    `name`: string,
    `score`: int>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1',
  'ignore.malformed.json' = 'true'
)
LOCATION 's3://my-bucket-of-data'
TBLPROPERTIES ('has_encrypted_data'='false');
// inside s3://path/to/bad.json
{"name":"1Patrick", "age":35}
{"name":"1Carlos",  "age":"eleven"}
{"name":"1Fabiana", "age":22}

// inside s3://path/to/good.json
{"name":"2Patrick", "age":35}
{"name":"2Carlos",  "age":11}
{"name":"2Fabiana", "age":22}
        source_s3_file | name     | age
---------------------------------------
s3://path/to/good.json | 1Patrick | 35
s3://path/to/good.json | 1Carlos  | 11
s3://path/to/good.json | 1Fabiana | 22
{ "id" : 50, "name":"John" }
{ "id" : 51, "name":"Jane" }
{ "id" : 53, "name":"Jill" }
{"name": "2Patrick","age": 35,"address": "North Street"}
{
    "name": "2Carlos",
    "age": 11,
    "address": "Flowers Street"
}
{"name": "2Fabiana","age": 22,"address": "Main Street"}
              source_s3_file |     name | age | address
-----------------------------|----------|-----|-------------
1 s3://path/to/malformed.json| 2Patrick | 35  | North Street
2 s3://path/to/malformed.json|          |     |
3 s3://path/to/malformed.json|          |     |
4 s3://path/to/malformed.json|          |     |
5 s3://path/to/malformed.json|          |     |
6 s3://path/to/malformed.json|          |     |
7 s3://path/to/malformed.json| 2Fabiana | 22  | Main Street